我想要一個子類修改它從父類繼承的類變量。Python中的繼承類變量修改
我願做線沿線的東西:
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"])
但這仍是一個黑客,因爲它的工作原理之前,我必須實例子的一個實例。
有沒有更好的方法?
這是非常輝煌和簡單!另外,如果子屬性的起始值必須與父屬性相同,則使用'from copy import deepcopy; foobar = deepcopy(Parent.foobar)' – zen11625