我希望能够在不继承类变量之一的情况下扩展类。
在这种情况下:
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对象而不是类的实例来访问别名。
有什么建议么?
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)