【发布时间】:2021-03-10 05:00:50
【问题描述】:
我在 python 上编程时发现了一个问题。我有 Dinero 类(英语货币),它具有 DnD 中货币的所有属性。
class Dinero:
def __init__(self, copper_pieces, silver_pieces, electrum_pieces, gold_pieces, platinum_pieces) -> None:
self.copper_pieces = copper_pieces
self.silver_pieces = silver_pieces
self.electrum_pieces = electrum_pieces
self.gold_pieces = gold_pieces
self.platinum_pieces = platinum_pieces
def __str__(self):
return "Dinero obtenido:\n Copper: "+str(self.copper_pieces)+"\n Silver: "+str(self.silver_pieces)+"\n Electrum: "+str(self.electrum_pieces)+"\n Gold: "+str(self.gold_pieces)+"\n Platinum: "+str(self.platinum_pieces)
def add_gold(self, gold):
self.gold_pieces += gold
def agregar_dinero(self, dinero):
self.copper_pieces += dinero.copper_pieces
self.silver_pieces += dinero.silver_pieces
self.electrum_pieces += dinero.electrum_pieces
self.gold_pieces += dinero.gold_pieces
self.platinum_pieces += dinero.platinum_pieces
然后我的班级名为 Mochila(英文包),其中包含项目列表和 Dinero 班级。
import dinero
class Mochila:
def __init__(self, dinero:dinero.Dinero=dinero.Dinero(0,0,0,0,0), items:list=[]):
self.items = items
self.dinero = dinero
def meter_item(self, item):
self.items.append(item)
def sacar_item(self, item):
self.items.remove(item)
在我的 main 中,我设置了 2 个不同的 mochila,而 mochila2 正在获取 mochila1 的 Dinero 的值。
import dinero
import mochila
mochila1 = mochila.Mochila()
mochila2 = mochila.Mochila()
print(mochila2.dinero)
nuevo_dinero = dinero.Dinero(10, 10,200,10,10)
print(mochila2.dinero)
mochila1.dinero.agregar_dinero(nuevo_dinero)
print(mochila2.dinero)
mochila2.dinero.agregar_dinero(mochila1.dinero)
mochila1.dinero = dinero.Dinero(0,0,0,0,0)
为什么会发生这种情况,我该如何解决?
【问题讨论】:
标签: python function class properties initialization