Python 在不同实例中使用(读/写)变量的适当方式?

Python 在不同实例中使用(读/写)变量的适当方式?,python,Python,我有100美元现金买些食物。 那么,使用不同的实例(apple,banana)全局读取/写入变量(cash)的合适/正确方法是什么 这看起来是正确的,但我感到不舒服,因为此代码覆盖了现金,它在钱包类中定义为类变量。(据我所知,类变量不应被覆盖。) 最好不要将钱包类定义为全局变量,而是将现金定义为全局变量? 如果我坚持定义Wallet类,那么在实例化类中应该如何处理cash?也许你的意思是不应该覆盖静态类变量。 我也不知道为什么食物有一种购买方法。也许您可以创建另一个类,例如Customer,然后

我有100美元现金买些食物。
那么,使用不同的实例(
apple
banana
)全局读取/写入变量(
cash
)的合适/正确方法是什么

这看起来是正确的,但我感到不舒服,因为此代码覆盖了
现金
,它在
钱包
类中定义为类变量。(据我所知,类变量不应被覆盖。)

最好不要将
钱包
类定义为全局变量,而是将
现金
定义为全局变量?

如果我坚持定义
Wallet
类,那么在实例化类中应该如何处理
cash

也许你的意思是不应该覆盖静态类变量。 我也不知道为什么食物有一种购买方法。也许您可以创建另一个类,例如Customer,然后让Wallet成为Customer的类变量

您可以执行以下操作:

class Wallet:
    def __init__(self, cash):
       self.cash = cash

    def add_cash(self, amount):
       self.cash += amount

    def subtract_cash(self, amount):
       self.cash -= amount

class Customer:
    def __init__(self, wallet):
       self.wallet = wallet

    def purchase(self, food):
       self.wallet.subtract_cash(food.value)

class Food:
    def __init__(self, value):
       self.value = value

也许你的意思是静态类变量不应该被覆盖。 我也不知道为什么食物有一种购买方法。也许您可以创建另一个类,例如Customer,然后让Wallet成为Customer的类变量

您可以执行以下操作:

class Wallet:
    def __init__(self, cash):
       self.cash = cash

    def add_cash(self, amount):
       self.cash += amount

    def subtract_cash(self, amount):
       self.cash -= amount

class Customer:
    def __init__(self, wallet):
       self.wallet = wallet

    def purchase(self, food):
       self.wallet.subtract_cash(food.value)

class Food:
    def __init__(self, value):
       self.value = value

您可能不应该在所做的事情中使用类属性,因为它们由类的所有实例共享。远离全局变量也是一个好主意。请看,您可能不应该在所做的事情中使用类属性,因为它们由类的所有实例共享。远离全局变量也是一个好主意。谢谢你的精彩回答。很容易理解。将一个实例变量(来自Wallet类)作为另一个类(客户)的变量是一个很好的解决方案,这样每个客户都可以使用(共享)一个钱包(只要共享Wallet类中相同的实例化变量)!谢谢你的精彩回答。很容易理解。将一个实例变量(来自Wallet类)作为另一个类(客户)的变量是一个很好的解决方案,这样每个客户都可以使用(共享)一个钱包(只要共享Wallet类中相同的实例化变量)!