首先请看下以下一段代码:
class Test(object):
num_of_instance = 0
def __init__(self, name):
self.name = name
Test.num_of_instance += 1
# end
if __name__ == '__main__':
print Test.num_of_instance
t1 = Test('jack')
print t1.name , t1.num_of_instance
t2 = Test('lucy')
print t2.name , t2.num_of_instance
# end
运行输出为:
0
jack 1
lucy 2
如果上面还有疑惑就得努力点看下入门教程,come on!
思考个问题:类变量和实例变量到底有什么不同? ok,接下来请看下面一段代码:
class Test2(object):
param = 1
def __init__(self):
pass
if __name__ == '__main__':
# 通过实例来改变类属性?
a = Test2()
a.param = 2
print a.param,Test2.param
# 新添某个实例的属性能共享(出现什么问题)?
a.ax = 12
a.ay = 13
b = Test2()
print a.ax, a.ay
print b.ax, b.ay
print Test2.ax, Test2.ay
# 新添类属性能共享?
Test2.param2 = 'param2'
print a.param2, b.param2
Afanty的讲解:
其实,从名字就能看出来,python的类变量和实例变量的区别:
类变量:天下共享(读)
是可在类的所有实例之间共享的值(也就是说,它们不是单独分配给每个实例的);
例如例1中,num_of_instance 就是类变量,用于跟踪存在着多少个Test 的实例。
实例变量:为我独尊
实例化之后,每个实例单独拥有的变量。