上课
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