刚才我被问到这个问题并且想不出 pythonic 解决方案,所以我想我会把它扔在这里以获得更好的观点。
在父类(super class)中扩展基类变量元组/列表等的最佳方法是什么?
以下作品...
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)
但似乎不是很 Pythonic,因为您必须按名称引用 BaseClass,因此如果名称更改,则必须更新它。有没有更好的方法来解决这个问题?
最佳答案
BaseClass
中的 BaseClass.some_class_member
不代表 super
的 AnotherClass
。它只是BaseClass.some_class_member
。您无需实例化即可访问。
>>> BaseClass.some_class_member
(1, 2, 3, 4, 5)
如果您的目的是在不实例化的情况下访问该值,那么简单的答案是
no
。但是,要在实例化后访问该值。
怎么样?
class AnotherClass(BaseClass):
def __init__(self):
self.some_class_member += (6, 7,)
关于Python:附加到基类列表/元组成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24287837/