python:在类中更新列表

本问题已经有最佳答案,请猛点这里访问。

在python3中,我有一个类列表,每个类都有一个列表。我更新那些名单有困难。所以:

1
2
3
4
5
6
7
8
9
10
class Item():
    newPrice = 0
    prices = [0]
    def __init__(self, _prices):
        self.prices = _prices

items = [Item([10]), Item([20]), Item([30])]
for item in items:
    item.newPrice = SomeFunction()
    item.prices.append(item.newPrice)

函数SomeFunction()是一个复杂的函数,它为每个Item实例检索不同的值。

由于某种原因,items列表中的每个Item实例对于prices都具有相同的值,这个列表包含每个Item实例的newPrice值。我希望这已经足够清楚了。

我错过了什么?


您应该将price定义为实例属性,而不是类属性,因为类属性在所有实例之间共享:

1
2
3
4
5
class Item():

    def __init__(self, _prices):
        self.newPrice = 0
        self.price = _prices