重複の可能性:
Pythonの「驚き最小の原則」:可変のデフォルト引数
名前と子のリストを持つPersonクラスを作成しました。子供たちは同じPersonクラスです。2つのPersonインスタンスを作成し、1つのPersonインスタンスに子を追加すると、両方のPersonインスタンスに追加されます。子はperson1の子にのみ追加され、person2には追加されないはずですが、両方に追加されます。私は明らかに間違ったことをしているに違いありませんが、私はそれを見ることができません。
同様の質問は、コンストラクターではなくクラス自体に変数定義を追加する人々を示しましたが、それはここで起こっていることではありません。どんな助けでも大歓迎です、それは私の脳を揚げています!
コードと出力については、以下を参照してください。
class Person(object):
def __init__(self, name, children=[]):
self.name = name
self.children = children
def __repr__(self):
return '<' + self.name + '>'
def add_child(self, child):
self.children.append(child)
def main():
person1 = Person('Person1')
person2 = Person('Person2')
person1.add_child(Person("Person 1's child"))
print "Person 1's children:", person1.children
print "Person 2's children:", person2.children
if __name__ == "__main__":
main()
このコードの出力は次のとおりです。
Person 1's children: [<Person 1's child>]
Person 2's children: [<Person 1's child>]