Python:附加到基类列表/元组成员

ptr*_*ptr 5 python

刚才有人问我这个问题,但我想不出一个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,因此如果名称更改则必须更新它。有更好的方法来解决这个问题吗?

eme*_*eth 2

BaseClassBaseClass.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)