Skip to main content
 首页 » 编程设计

Python 为什么我收到未定义的错误

2025年05月04日15飞鱼

当我在类代码块中使用任何类变量时,出现未定义错误。我该如何解决?

例子

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 个前导下划线。