2016-11-02 21 views
-3

Итак, я делаю класс Bank в python. Он имеет основные функции по депонированию, снятию и проверке баланса. Однако у меня проблемы с методом передачи.Метод перевода в классе банка для python

Это мой код для класса.

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) 

Я просто понятия не имею, как это сделать.

ответ

0

Вы можете сохранить все идентификационные номера и связанные с ними объекты в файле с идентификатором в качестве ключа, а объект - как значение.

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)