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