我想让一个子类修改它从其父类继承的类变量。
我想做一些类似的事情:
class Parent(object):
foobar = ["hello"]
class Child(Parent):
# This does not work
foobar = foobar.extend(["world"])
理想情况下有:
Child.foobar = ["hello", "world"]
我可以做:
class Child(Parent):
def __init__(self):
type(self).foobar.extend(["world"])
但是每次我实例化一个 Child 的实例时,“world”都会附加到列表中,这是不希望的。我可以将其进一步修改为:
class Child(Parent):
def __init__(self):
if type(self).foobar.count("world") < 1:
type(self).foobar.extend(["world"])
但这仍然是一个hack,因为我必须在它工作之前实例化一个 Child 的实例。
有没有更好的办法?