我有一个Data类,其中包含一个字段,价格。 我在另一个类Store中引用了price字段。 该怎么做才能使Store看到对价格的修改? 这是代码中的情况。
import numpy as np
class Data:
def __init__(self):
self.price=np.array([1,2,3])
def increasePrice(self,increase):
self.price=self.price*increase
class Store:
def __init__(self):
self.data=Data()
self.price=self.data.price
def updateData(self):
self.data.increasePrice(2)
print self.data.price #print [2,3,6]
print self.price #print [1,2,3]
我发现这样做的唯一方法是重新引用价格。
class Store:
....
def updateData(self):
self.data.increasePrice(2)
self.price=self.data.price #re-referencing price
print self.data.price #print [2,3,6]
print self.price #print [2,3,6]
但我希望采用更“自动”的方式来保持字段同步。 我是python的新手,我不清楚范围规则。 谢谢你的帮助。
答案 0 :(得分:2)
此问题最简单的解决方法是不在price
个实例中复制Store
- 只需在任何地方使用self.data.price
。
如果出于某种原因这不是一个选项,您可以定义一个属性:
class Store(object):
...
@property
def price(self):
return self.data.price
这样,data
个实例的Store
属性将始终返回self.data.price
的当前值。