python银行类中的转账方法

时间:2016-11-02 22:27:32

标签: python class methods transfer bank

所以,我正在python中创建一个Bank类。它具有存款,取款和检查余额的基本功能。我遇到了传输方法的问题。

这是我的课程代码。

def __init__(self, customerID):
    self.ID = customerID
    self.total = 0

def deposit(self, amount):
    self.total = self.total + amount
    return self.total

def withdraw(self, amount):
    self.total = self.total - amount
    return self.total

def balance(self):
    return self.total

def transfer(self, amount, ID):
    self.total = self.total - amount 
    ID.total = ID.total + amount 
    return ID.balance()

现在,它有效,但不是我想要的方式。 如果我写这样的声明,它就会起作用

bank1 = Bank(111)
bank1.deposit(150)
bank2 = Bank(222)
bank1.transfer(50, bank2)

但我希望能够使用银行的身份证号码,而不是我给它的名字,如果这有意义吗?所以不要说

bank1.transfer(50, bank2)

我想说它

bank1.transfer(50, 222)

我根本不知道该怎么做。

2 个答案:

答案 0 :(得分:0)

您可以将所有ID号及其相关对象存储在dict中,ID为键,对象为值。

答案 1 :(得分:0)

def __init__(self, customerID):
    self.ID = customerID
    self.__class__.__dict__.setdefault("idents",{})[self.ID] = self
    self.total = 0

@classmethod
def get_bank(cls,id):
    return cls.__dict__.setdefault("idents",{}).get(id)

是你可以做到的一种粗暴方式

bank2_found = Bank.get_bank(222)