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
也可以看出,类的命名空间中的属性实在第一次执行时生成的。
可以在类的定义中设置共享属性。