在方法中执行的代码在该方法的本地范围内运行。如果访问不在此范围内的对象,Python将在全局/模块范围内而 不是
在类范围或任何封闭类的范围内查找对象!
这意味着:
A.a = 'a_b'
inside
C.B.__init__将设置全局
A类的class属性,而不是
C.A您可能想要的。为此,您必须这样做:
C.A.a = 'a_b'
另外,如果您在子类中覆盖父方法,Python将不会调用父方法。你必须自己做。
作用域规则意味着,如果要在内部调用
__init__父类的方法
C.B.__init__,则它必须看起来像这样:
C.A.__init__(self)
而不是这样的:
A.__init__(self)
这可能是您尝试过的。



