就地修改numpy数组或如何获取对要更新的numpy数组的引用

2024-10-03 21:27:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据类,只有一个字段price。 我引用了另一个类存储中的price字段。 该如何做,使商店看到修改价格? 下面是代码中的情况。你知道吗

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新手,对范围规则不太清楚。 谢谢你的帮助。你知道吗


Tags: 数据storeselfdatainitdefnpprice
1条回答
网友
1楼 · 发布于 2024-10-03 21:27:21

这个问题最简单的解决方法是不要在Store实例中复制price,而只是在任何地方使用self.data.price。你知道吗

如果出于某种原因这不是一个选项,您可以定义一个属性:

class Store(object):
    ...
    @property
    def price(self):
        return self.data.price

这样,Store实例的data属性将始终返回self.data.price的当前值。你知道吗

相关问题 更多 >