亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python面向?qū)ο蟪绦蛟O(shè)計類變量與成員變量、類方法與成員方法用法分析

 更新時間:2019年04月12日 11:21:21   作者:微信1257309054  
這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計類變量與成員變量、類方法與成員方法用法,結(jié)合實例形式較為詳細(xì)的分析了類變量與成員變量、類方法與成員方法、類方法與靜態(tài)方法等概念、原理及使用技巧,需要的朋友可以參考下

本文實例講述了Python面向?qū)ο蟪绦蛟O(shè)計類變量與成員變量、類方法與成員方法用法。分享給大家供大家參考,具體如下:

類變量與成員變量

在類中聲明的變量我們稱之為類變量[靜態(tài)成員變量],

init()函數(shù)中聲明的變量并且綁定在實例上的變量我們稱之為成員變量。

類變量直接可以通過類名來調(diào)用。

1、若類變量與成員同時存在并且同名

使用對象來調(diào)用的時候,獲取的結(jié)果是成員變量的值,

使用類名來調(diào)用,獲取的是類變量的值。

2、若類變量存在,成員變量不存在,

使用對象來調(diào)用的時候,它首先尋找成員變量,

如果成員變量不存在。則去尋找類變量。

3、若類變量不存在,成員變量存在:

使用類名來調(diào)用,則會報錯

總結(jié):

類變量通過類名或者對象來調(diào)用都不會報錯,但是成員變量只能通過對象來調(diào)用。

通過對象來修改類屬性的時候,只能作用到對象自己本身,作用不到類,

若是通過類名來修改類屬性,則只對類變量的值進(jìn)行修改。

class Person(object):
  # 類變量
  name = "haha"
  age = "19"
  height = 170
  def __init__(self,name,age,weight):
    # 成員變量
    self.name = name
    self.age = age
    self.weight = weight
  def sayHeight(self):
    print(self.height)
per = Person("xiaoming",19,50)
print(per.name)
print(Person.name)
# print(Person.weight)
per.height = 190
print(per.height)
print(Person.height)
print('*********')
Person.height = 200
print(Person.height)
print(per.height)
per.sayHeight()

輸出:

xiaoming
haha
190
170
*********
200
190
190

類方法與成員方法

類方法,成員方法

類方法:使用類名來調(diào)用的方法

成員方法:使用對象來調(diào)用的方法

若一個方法定義在類中,但是沒有參數(shù)[一般默認(rèn)self],此時我們只能通過類名來調(diào)用

若我們需要使用到一個類的對象,首先要實例化。

class Person(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
  def say(self):
    print("I am %s, I am %d year old"%(self.name,self.age))
  def sayHello():
    print('hello I am class function')
per = Person("xiaoming",19)
per.say()
Person.sayHello()

輸出:

I am xiaoming, I am 19 year old
hello I am class function

類方法與靜態(tài)方法

靜態(tài)方法

當(dāng)調(diào)用此方法時,不會將類的實例傳遞給它。

在類中定義的函數(shù)。

無需實例化類,就可以調(diào)用。它的定義在繼承中,是不可變的。

類方法:

當(dāng)調(diào)用此方法時,將函數(shù)所屬的類作為第一個參數(shù)傳遞。

class A(object):
    def foo(self, x):
      print("executing foo(%s, %s)" % (self, x))
    @classmethod
    def class_foo(cls, x):
      print("executing class_foo(%s, %s)" % (cls, x))
    @staticmethod
    def static_foo(x):
      print("executing static_foo(%s)" % x)
  a = A()
  # 調(diào)用foo函數(shù),參數(shù)傳入1
  a.foo(1)
  # 調(diào)用class_foo,參數(shù)傳入1
  A.class_foo(1)
  # 調(diào)用static_foo,參數(shù)傳入1
  A.static_foo(1)
  a.static_foo(1):

輸出:

executing foo(<__main__.A object at 0x0000024F126489B0>, 1)
executing class_foo(<class '__main__.A'>, 1)
executing static_foo(1)
executing static_foo(1)

下劃線

下劃線定義特殊的方法,一般情況下是系統(tǒng)定義名字,
如:

__init()__、__del()__

前雙下劃線(age):表示私有類型的變量(privated),只能在本類中進(jìn)行訪問,外界不能直接訪問。如__age.

單下劃線(_age):以單下劃線開頭的表示保護(hù)類型變量(protected),

保護(hù)類型的變量只允許本身以及子類訪問,不能用于from module import *

[使用單下劃線開頭的時候,雖然變量能夠直接被訪問,但是請把變量視為一個保護(hù)類型的變量,盡量不要去訪問。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

最新評論