類屬性必須賦值。
創建類屬性 類是模板,而實例則是根據類創建的對象。 綁定在一個實例上的屬性不會影響其他實例,但是,類本身也是一個對象,如果在類上綁定一個屬性,則所有實例都可以訪問類的屬性,並且,所有實例訪問的類屬性都是同一個!也就是說,實例屬性每個實例各自擁有,互相獨立,而類屬性有且只有一份。 定義類屬性可以直接在 class 中定義: class Person(object): address = 'Earth' def __init__(self, name): self.name = name 因為類屬性是直接綁定在類上的,所以,訪問類屬性不需要創建實例,就可以直接訪問: print Person.address # => Earth 對一個實例調用類的屬性也是可以訪問的,所有實例都可以訪問到它所屬的類的屬性: p1 = Person('Bob') p2 = Person('Alice') print p1.address # => Earth print p2.address # => Earth 由於Python是動態語言,類屬性也是可以動態添加和修改的: Person.address = 'China' print p1.address # => 'China' print p2.address # => 'China' 因為類屬性只有一份,所以,當Person類的address改變時,所有實例訪問到的類屬性都改變了。 任務 請給 Person 類添加一個類屬性 count,每創建一個實例,count 屬性就加 1,這樣就可以統計出一共創建了多少個 Person 的實例。 ?不會了怎么辦 由於創建實例必定會調用__init__()方法,所以在這里修改類屬性 count 很合適。 參考代碼: class Person(object): count = 0 def __init__(self, name): Person.count = Person.count + 1 self.name = name p1 = Person('Bob') print Person.count # => 1 p2 = Person('Alice') print Person.count # => 2 p3 = Person('Tim') print Person.count # => 3
