类变量:
是可在类的所有实例间共享的值,类变量用于跟踪存在着多少个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]