類是模板,而例項則是根據類建立的物件。
繫結在乙個例項上的屬性不會影響其他例項,但是,類本身也是乙個物件,如果在類上繫結乙個屬性,則所有例項都可以訪問類的屬性,並且,所有例項訪問的類屬性都是同乙個!也就是說,例項屬性每個例項各自擁有,互相獨立,而類屬性有且只有乙份。
定義類屬性可以直接在 class 中定義:
classperson(object):
address = '
earth
'def
__init__
(self, name):
self.name = name
因為類屬性是直接繫結在類上的,所以,訪問類屬性不需要建立例項,就可以直接訪問:
person.address
#=> earth
對乙個例項呼叫類的屬性也是可以訪問的,所有例項都可以訪問到它所屬的類的屬性:
p1 = person('bob'
)p2 = person('
alice')
p1.address
#=> earth
p2.address
#=> earth
由於python是動態語言,類屬性也是可以動態新增和修改的:
person.address = 'china
p1.address
#=> 'china'
p2.address
#=> 'china'
因為類屬性只有乙份,所以,當person類的address改變時,所有例項訪問到的類屬性都改變了。
請給 person 類新增乙個類屬性 count,每建立乙個例項,count 屬性就加 1,這樣就可以統計出一共建立了多少個 person 的例項。
classperson(object):
count =0
def__init__
(self,name):
self.name =name
person.count = person.count + 1p1 = person('
bob'
(p1.count)
p2 = person('
alice')
(p2.count)
p3 = person('
tim'
)print (person.count)
123
python 類屬性 用處 Python類屬性詳解
類屬性1.類定義後就存在,而且不需要例項化 2.類屬性使得相同類的不同例項共同持有相同變數 類屬性例項 attrb.py class testcss cssa class attribe def init self self.a 0 self.b 10 def info self print a s...
python限定類屬性的類屬性 slots
slots 由於python是動態語言,任何例項在執行期都可以動態地新增屬性。如果要限制新增的屬性,例如,student類只允許新增 name gender和score 這3個屬性,就可以利用python的乙個特殊的 slots 來實現。顧名思義,slots 是指乙個類允許的屬性列表 class s...
Python類屬性,例項屬性
dreamfor的部落格 1.python類資料屬性 定義在類裡面但在函式外面的變數,它們都是靜態的。一段很簡單的 但反應了很多 class a a 1 乙個類裡面有個屬性a a a b a a.a b.a a.a 這個屬效能被例項和類訪問 a.a 2 b.a a.a 改變例項a的屬性a,例項b和類...