刚才有人问我这个问题,但我想不出一个Python式的解决方案,所以我想我应该把它扔在这里以获得更好的观点。
在超类中扩展基类变量元组/列表等的最佳方法是什么?
以下作品...
class BaseClass(object):
some_class_member = (1, 2, 3, 4, 5,)
class AnotherClass(BaseClass):
some_class_member = BaseClass.some_class_member + (6, 7,)
a = BaseClass()
a.some_class_member # (1, 2, 3, 4, 5)
b = AnotherClass()
b.some_class_member # (1, 2, 3, 4, 5, 6, 7)
Run Code Online (Sandbox Code Playgroud)
但似乎不太Pythonic,因为您必须按名称引用BaseClass,因此如果名称更改则必须更新它。有更好的方法来解决这个问题吗?
BaseClass在BaseClass.some_class_member并不super意味着AnotherClass. 它只是
BaseClass.some_class_member。无需实例化即可访问。
>>> BaseClass.some_class_member
(1, 2, 3, 4, 5)
Run Code Online (Sandbox Code Playgroud)
如果您的目的是在不实例化的情况下访问该值,那么简单的答案是no。但是,要在实例化后访问该值。
怎么样?
class AnotherClass(BaseClass):
def __init__(self):
self.some_class_member += (6, 7,)
Run Code Online (Sandbox Code Playgroud)