Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在类中更新值_Python_Python 3.x - Fatal编程技术网

Python 如何在类中更新值

Python 如何在类中更新值,python,python-3.x,Python,Python 3.x,我正在尝试编写一个独立于主类的类,我希望它能够跟踪我从主类购买的物品的平衡和数量。但是,我在每次进行交易时都很难更新Num和balance,当我打印balance和Num时,它总是给我0和2000 class Wallet: def __init__(self, Num = 0, balance = 2000): self.Num = Num self.balance = balance def addNum(self, c, d):

我正在尝试编写一个独立于主类的类,我希望它能够跟踪我从主类购买的物品的平衡和数量。但是,我在每次进行交易时都很难更新Num和balance,当我打印balance和Num时,它总是给我0和2000

class Wallet:

    def __init__(self, Num = 0, balance = 2000):
        self.Num = Num
        self.balance = balance

    def addNum(self, c, d):
        if d > self.balance:
            return print(f'You have insufficient balance to buy {c}')
        else:
            self.balance -= d
            self.Num += c
            return Wallet().print()

    def print(self):
        print(f'You have {self.Num} of {self.balance}')


Wallet().addNum(3, 30)

Wallet().print()
替换为
self.print()
,否则每次尝试打印时都会创建一个全新的钱包。

非常感谢。似乎每次我在while循环中运行它时,平衡和num都会刷新。有没有办法保存每次跑步?@tec3719你到底在做什么?您是否正在while循环中执行
Wallet().addNum(3,30)
?因为同样,每次都会创建一个新实例。这同样适用于
Wallet().addNum(3,30)
:每次这样做时,它都会创建一个新的Wallet。试试
wallet=wallet();wallet.addNum(3,30);钱包.地址(1,17);wallet.print()
。首先需要创建
wallet
的实例。然后调用实例方法
addNum(3,30)
。也就是说,首先是
my_wallet=wallet()
,然后是
my_wallet.addNum(3,30)
。此外,它应该是
return self.print()
,而不是
return wallet().print()。