Python 如何创建基于类上的对象计算其值的全局变量?
我刚刚通过一个很好的银行作业开始学习Python。一个问题是在类中设置两个全局变量:total_balance和total_customer,前者是所有客户的余额之和(浮点值),后者是客户总数(整数)。我想不出在类中声明这一点的方法 类定义当前为:Python 如何创建基于类上的对象计算其值的全局变量?,python,class,global-variables,Python,Class,Global Variables,我刚刚通过一个很好的银行作业开始学习Python。一个问题是在类中设置两个全局变量:total_balance和total_customer,前者是所有客户的余额之和(浮点值),后者是客户总数(整数)。我想不出在类中声明这一点的方法 类定义当前为: class BankAccount: def __init__(self, name, balance=0.00): self.name = str(name) self.balance = float(bal
class BankAccount:
def __init__(self, name, balance=0.00):
self.name = str(name)
self.balance = float(balance)
也许这样就足够了
class BankAccount:
def __init__(self, name, balance=0.00):
self.name = str(name)
self.balance = float(balance)
def total_all_accounts(account_list):
total = 0
for account in account_list:
total += account.balance
print("Total held in bank: ${0:.2f}".format(total))
print("Total number of customers: {}".format(len(account_list)))
myList = []
for i in range(25):
account = BankAccount('John Doe', balance=5.00)
myList.append(account)
total_all_accounts(myList)
这将创建一个对象列表(所有客户都是“John Doe”,在创建帐户时存入5.00美元)。然后,我们有一个函数,可以从该列表中获取信息,并根据客户和总存款对其进行合计。您可能希望更改列表的制作方式,以便客户拥有不同的名称和帐户余额,但我认为此示例演示了如何在列表中存储对象并在函数中访问它们的属性
对我来说,这将产生:
银行存款总额:125.00美元
客户总数:25
也许这样就足够了
class BankAccount:
def __init__(self, name, balance=0.00):
self.name = str(name)
self.balance = float(balance)
def total_all_accounts(account_list):
total = 0
for account in account_list:
total += account.balance
print("Total held in bank: ${0:.2f}".format(total))
print("Total number of customers: {}".format(len(account_list)))
myList = []
for i in range(25):
account = BankAccount('John Doe', balance=5.00)
myList.append(account)
total_all_accounts(myList)
这将创建一个对象列表(所有客户都是“John Doe”,在创建帐户时存入5.00美元)。然后,我们有一个函数,可以从该列表中获取信息,并根据客户和总存款对其进行合计。您可能希望更改列表的制作方式,以便客户拥有不同的名称和帐户余额,但我认为此示例演示了如何在列表中存储对象并在函数中访问它们的属性
对我来说,这将产生:
银行存款总额:125.00美元
客户总数:25
通过全局变量,您应该引用类变量,它们的值是类范围的,并且不绑定到实例。在您的情况下,
total\u balance
和total\u customer
类变量可以这样定义,以便每个新的BankAccount
对象的实例化将相应地增加两个类变量:
class BankAccount:
total_balance = 0.0
total_customer = 0
def __init__(self, name, balance=0.0):
self.name = name
self.balance = balance
self.total_balance += balance
self.total_customer += 1
通过全局变量,您应该引用类变量,它们的值是类范围的,并且不绑定到实例。在您的情况下,
total\u balance
和total\u customer
类变量可以这样定义,以便每个新的BankAccount
对象的实例化将相应地增加两个类变量:
class BankAccount:
total_balance = 0.0
total_customer = 0
def __init__(self, name, balance=0.0):
self.name = name
self.balance = balance
self.total_balance += balance
self.total_customer += 1
也许我应该更清楚地回答这个问题。我确实想过使用loop,但我一直坚持用这个类创建的对象来创建列表。例如:yuri=BankAccount(name=“yuri”,balance=100)和anna=BankAccount(name=“anna”,balance=1000)@ThaiNguyen你可以说
myList.append(BankAccount('yuri',balance=100.00))
也许我应该更清楚地回答这个问题。我确实想过使用loop,但我一直坚持用这个类创建的对象来创建列表。例如:yuri=BankAccount(name=“yuri”,balance=100)和anna=BankAccount(name=“anna”,balance=1000)@ThaiNguyen你可以说myList.append(BankAccount('yuri',balance=100.00))
Ooohh。指令上写着“全局”,所以我试着坚持这一点,没有考虑像这样的嵌套解决方案。也就是说,我认为每个新对象的每个实例化都是独立于前一个对象运行的?我试过使用2个对象,没有递增。只有一个实例的实例变量独立于另一个实例的实例变量。另一方面,类变量在Class.oooh的所有实例中共享。指令上写着“全局”,所以我试着坚持这一点,没有考虑像这样的嵌套解决方案。也就是说,我认为每个新对象的每个实例化都是独立于前一个对象运行的?我试过使用2个对象,没有递增。只有一个实例的实例变量独立于另一个实例的实例变量。另一方面,类变量在类的所有实例中共享。