給例項繫結屬性的方法是通過例項變數,或者通過self
變數:
class
student
(object):
def__init__
(self, name):
self.name = name
s = student('bob')
s.score = 90
但是,如果student
類本身需要繫結乙個屬性呢?可以直接在class中定義屬性,這種屬性是類屬性,歸student
類所有:
class
student
(object):
name = 'student'
當我們定義了乙個類屬性後,這個屬性雖然歸類所有,但類的所有例項都可以訪問到。來測試一下:
>>>
class
student
(object):
... name = 'student'
...>>> s = student() # 建立例項s
>>> print(s.name) # 列印name屬性,因為例項並沒有name屬性,所以會繼續查詢class的name屬性
student
>>> print(student.name) # 列印類的name屬性
student
>>> s.name = 'michael'
# 給例項繫結name屬性
>>> print(s.name) # 由於例項屬性優先順序比類屬性高,因此,它會遮蔽掉類的name屬性
michael
>>> print(student.name) # 但是類屬性並未消失,用student.name仍然可以訪問
student
>>>
del s.name # 如果刪除例項的name屬性
>>> print(s.name) # 再次呼叫s.name,由於例項的name屬性沒有找到,類的name屬性就顯示出來了
student
從上面的例子可以看出,在編寫程式的時候,千萬不要把例項屬性和類屬性使用相同的名字,因為相同名稱的例項屬性將遮蔽掉類屬性,但是當你刪除例項屬性後,再使用相同的名稱,訪問到的將是類屬性。 類屬性與例項屬性
類屬性 類屬性的增刪改查 class people country china def init self,name self.name name def eat food self,food print s正在吃 s self.name,food def play ball self,ball p...
類屬性與例項屬性
類屬性 類屬性的增刪改查 class people country china def init self,name self.name name defeat food self,food print s正在吃 s self.name,food defplay ball self,ball pri...
類屬性 例項屬性
例項屬性 物件屬性 顧名思義,類屬性就是類物件所擁有的屬性,它被所有類物件的例項物件所共有,在記憶體中只存在乙個副本,這個和c 中類的靜態成員變數有點類似。對於公有的類屬性,在類外可以通過類物件和例項物件訪問 例項如下 class people object name tom 公有的類屬性 age ...