wilkins

老实做人

导航

Python 类的命名空间

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

也可以看出,类的命名空间中的属性实在第一次执行时生成的。

可以在类的定义中设置共享属性

posted on 2015-04-27 15:46  wilkins  阅读(271)  评论(0编辑  收藏  举报