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
也可以看出,类的命名空间中的属性实在第一次执行时生成的。
可以在类的定义中设置共享属性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步