我有以下类,这些类在IPython 3.6笔记本中使用:
class LaborResult:
value = Value()
quantity = 0.0
class Value:
absolute = 0
relative = 0
service = 0
def add(self, anotherValue):
self.absolute = self.absolute + anotherValue.absolute
self.relative = self.relative + anotherValue.relative
self.service = self.service + anotherValue.service
def str(self):
return 'Value(abs=' + str(self.absolute) + ', rel=' + str(self.relative) + ', srv=' + str(self.service) + ')'
我发现在某些情况下value.relative
初始化为错误的值(12而不是0)。
执行时
x = Value()
x.str()
我得到正确的结果:
'Value(abs=0, rel=0, srv=0)'
当我将代码更改为
y = LaborResult()
y.value.str()
结果是
'Value(abs=0, rel=12, srv=0)'
我看不到rel=12
的来源。
不幸的是,如果我删除所有其他代码(即,仅隔离这两个类),则不会发生此错误。此类行为的可能原因是什么,以及如何解决(确保第二个示例中的y.value.relative == 0
)?
更新:
将错误改写为:
class Value:
def __init__(self):
self.absolute = 0.0
self.relative = 0.0
self.service = 0.0
def add(self, anotherValue):
self.absolute = self.absolute + anotherValue.absolute
self.relative = self.relative + anotherValue.relative
self.service = self.service + anotherValue.service
def str(self):
return 'Value(abs=' + str(self.absolute) + ', rel=' + str(self.relative) + ', srv=' + str(self.service) + ')'
class LaborResult:
def __init__(self):
self.value = Value()
self.quantity = 0.0