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