python的例項屬性與類屬性

2021-08-16 00:02:14 字數 803 閱讀 6810

不說廢話,上**(python3)。

class cls:

common = 7 #靜態變數,在cls的__dict__裡面

def __init__(self): #例項方法,在cls的__dict__裡面

self.age = 5 #例項屬性,在例項的__dict__

def f(self): #例項方法,在cls的__dict__裡面

return self.age

>>> dir(cls)

['__class__', '__dict__', '__init__', 'common', 'f', ...]

>>> cls.__dict__

>>> cls.__class__

>>> c=cls()

>>> dir(c)

['__class__', '__dict__', '__init__', 'age', 'common', 'f']

>>> c.__dict__

>>> c.common = 1

>>> c.__dict__

>>> c.__class__

#如何修改類的已有方法或者新增新方法?

>>> def g(x): return x.age + 1

>>> cls.f = g #注意這裡是cls.f而不是c.f

>>> c.f()

6#如果這樣改會怎樣?

>>> c.f = g

>>> c.f() #拋異常,缺少引數

>>> c.f(c) #ok,但是不方便

Python 類屬性與例項屬性

python在 init self 方法中定義的屬性為例項屬性,並且python的例項可以動態地增加例項屬性 直接跟在類名後邊定義的屬性都預設是類屬性 類似於c 的static變數 要明白雷和例項都是命名空間。類是類屬性的命名空間,例項則是例項屬性的命名空間。例項屬性能夠在名稱訪問 搜尋 中覆蓋類屬...

Python例項屬性與類屬性

class foo object version 1.0 f foo print foo.version 1.0 print f.version 1.0 foo.version 0.1 print foo.version 1.1 print f.version 1.1 f.version 0.1 p...

Python類屬性與例項屬性

類屬性為所有例項擁有,例項屬性為單個例項擁有class cls object count 0 count 0def init self cls.count cls.count 1 self.count self.count 1 p cls print 類屬性 d p.count print 例項屬性...