-2

所以,我在 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)

我只是不知道该怎么做。

4

2 回答 2

1
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)
于 2016-11-02T22:33:15.607 回答
0

您可以将所有 ID 号及其关联对象存储在一个字典中,其中 ID 作为键,对象作为值。

于 2016-11-02T22:31:51.747 回答