Python中的私有类变量?

Ray*_*emi 3 python class

我希望能够在不继承类变量之一的情况下扩展类。

在这种情况下:

class A:
    aliases=['a','ay']

class B(A):
    pass

print(B.aliases)
Run Code Online (Sandbox Code Playgroud)

我宁愿得到这样一个错误,即B尚未定义aliases变量,而不是B意外调用ay

可以想象一个解决方案,其中别名成为实例化对象(self.aliases)的成员并被设置在其中,__init__但我确实希望能够使用cls对象而不是类的实例来访问别名。

有什么建议么?

Yev*_*ych 5

Python没有REALY私有属性。但您可以使用双下划线(__)进行定义:

class A:
    __aliases=['a','ay']

class B(A):
    pass

print(B.__aliases) # yields AttributeError
Run Code Online (Sandbox Code Playgroud)

但是您仍然可以通过以下方式访问它:

print(B._A__aliases)
Run Code Online (Sandbox Code Playgroud)