Python語言特性-類變數和例項變數
阿新 • • 發佈:2018-12-15
類變數: 是可在類的所有例項間共享的值,類變數用於跟蹤存在著多少個Test的例項
例項變數: 例項化之後,每個例項都會有單獨的變數
例1
class Test(object): num_of_instance = 0 def __init__(self, name): self,name = name Test.num_of_instance += 1 if __name__ == '__main__': print Test.num_of_instance # 0 t1 = Test('NA1') print Test.num_of_instance # 1 t2 = Test('NA2') print t1.name, t1.num_of_instance # NA1 2 print t2.name, t2.num_of_instance # NA2 2
例2
class Person:
name = 'a'
p1 = Person()
p2 = Person()
p1.name = 'b'
print p1.name # b
print p2.name # a
print Person.name # a
上面的 例子中p1.name = 'b’是例項呼叫了類比那裡,就是函式傳參的問題,p1.name一開始是指向的類變數 name = ‘aaa’, 但是在例項的作用域例把類變數的引用改變了,就變成了例項變數,而self.name就不能引用Person的類變數name了。
我們可以看一下例3:
class Person: name=[] p1=Person() p2=Person() p1.name.append(1) print p1.name # [1] print p2.name # [1] print Person.name # [1]