首页 > 解决方案 > 在此类的方法中使用类变量

问题描述

当有人将钱存入我的银行时,我正在尝试更新类变量的值。

我的代码

class Bank_account():
    
    bank_balance = 0
    
    def __init__(self, name_holder, id, balance):
        self.name = name_holder
        self.id = id
        self.balance = balance
        bank_balance += balance
        
    def cash_in(self, cash):
        self.balance += cash
        bank_balance += cash
        
    def with_draw(self, draw):
        if self.balance < draw or bank_balance < draw:
            print('Error')
        else:
            print('Here your money!')

John = Bank_account('John', 123456, 2.10**6)
Smith = Bank_account('Smith', 111111, 3.10**6)
Michael = Bank_account('Michael', 123123, 4.10**6)

Bank_account.bank_balance

我的结果

UnboundLocalError                         Traceback (most recent call last)
<ipython-input-30-0a83e2bc19e8> in <module>
     19             print('Here your money!')
     20 
---> 21 Quang = Bank_account('Quang', 123456, 2.10**6)
     22 Kien = Bank_account('Kien', 111111, 3.10**6)
     23 Trung = Bank_account('Trung', 123123, 4.10**6)

<ipython-input-30-0a83e2bc19e8> in __init__(self, name_holder, id, balance)
      7         self.id = id
      8         self.balance = balance
----> 9         bank_balance += balance
     10 
     11     def cash_in(self, cash):

UnboundLocalError: local variable 'bank_balance' referenced before assignment

谁能告诉我如何使用类变量并解释我的错误?

标签: pythonclass

解决方案


class Bank_account():
    def __init__(self, name_holder, id, balance,bank_balance=0):
        self.name = name_holder
        self.id = id
        self.balance = balance
        self.bank_balance = balance
        
    def cash_in(self, cash):
        self.balance += cash
        self.bank_balance += cash
        
    def with_draw(self, draw):
        if self.balance < draw or bank_balance < draw:
            print('Error')
        else:
            print('Here your money!')

John = Bank_account('John', 123456, 2.10**6)
Smith = Bank_account('Smith', 111111, 3.10**6)
Michael = Bank_account('Michael', 123123, 4.10**6)

print(John.bank_balance)

我认为这就是你想要做的。


推荐阅读