刚才我被问到这个问题并且想不出 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 不代表 superAnotherClass 。它只是
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/

10-13 04:10