私は、子クラスがその親から継承するクラス変数を変更したいと思っています。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