当我在类代码块中使用任何类变量时,出现未定义错误。我该如何解决?
例子
class A():
__hidden_number__ = 5
__no_hidden_number__ = A.__hidden_number__ + 4 # to cause error. why ?
谢谢。
请您参考如下方法:
您的类变量已经在 A 命名空间中。
所以你只需要做:
__no_hidden_number__ = __hidden_number__ + 4
否则您正在尝试访问 A.A 但它尚不存在。
为了说明我所说的“有效”(但不是您想要的):
class A():
class A():
__hidden_number__ = 4
__no_hidden_number__ = A.__hidden_number__ + 4
A() # that works
那不是:
class A():
class B():
__hidden_number__ = 4
__no_hidden_number__ = A.__hidden_number__ + 4 # B.__... would've worked
A() # beeep: NameError: name 'A' is not defined
请注意,您应该避免使用尾随双下划线 (__xxx__) 来定义私有(private)属性。它有效,但这通常保留给 python 特殊类成员(__class__、__file__、__eq__ 等)。名称重整(使对象“私有(private)”)已经发生了 2 个前导下划线。
