1. 程式人生 > >Python語言特性-類變數和例項變數

Python語言特性-類變數和例項變數

類變數: 是可在類的所有例項間共享的值,類變數用於跟蹤存在著多少個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]