重複の可能性:
Python の「最小の驚き」: 変更可能な既定の引数
授業のために
class ValidationResult():
def __init__(self, passed=True, messages=[], stop=False):
self.passed = passed
self.messages = messages
self.stop = stop
ランニング
foo = ValidationResult()
bar = ValidationResult()
foo.messages.append("Foos message")
print foo.messages
print bar.messages
生産する
['Foos message']
['Foos message']
まだこれ
foo = ValidationResult()
bar = ValidationResult(messages=["Bars message"])
foo.messages.append("Foos message")
print foo.messages
print bar.messages
生産する
['Foos message']
['Bars message']
ここでインスタンス属性を理解するのに船を逃したと思います。最初のサンプルでは、Foos message
にのみ適用されると予想していましたfoo
。インスタンスによってのみ変更可能なオブジェクト属性を宣言する正しい方法は何ですか?
Python 2.7.1 の使用