Python中类的定义其实就是执行代码块:
classcc:
a=0print '+++++',print a
会直接执行print语句而不是在实例化cc时执行。执行后会生成对应的类的命名空间。
可以用"类名.属性"来访问或者修改此空间的属性。如cc.a每次实例化一个对象就是继承上述属性。
classcc:
a=0print '+++++',printadefinit(self):
cc.a=cc.a+1#修改类的a,下一次实例化时a将发生改变
definit1(self):
self.a=self.a+1#修改自身的a,不影响类的a
cc1=cc()
cc1.init()printcc.aprintcc1.a
cc2=cc()
cc2.init1()printcc.aprint cc2.a
比较如下代码:
classcc:print '+++++',def __init__(self):
self.a=1#创建时自动添加属性a
c=cc()printc.aprint cc.a#出错,cc没有属性a
也可以看出,类的命名空间中的属性实在第一次执行时生成的。
可以在类的定义中设置共享属性。