<分区>
Possible Duplicate:
“Least Astonishment” in Python: The Mutable Default Argument
为了上课
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 消息
仅应用于 foo
。声明仅由其实例可变的对象属性的正确方法是什么?
使用 Python 2.7.1