【问题标题】:Transfer method in bank class for pythonpython的银行类中的转账方法
【发布时间】:2016-11-02 22:27:32
【问题描述】:

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

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

bank1.transfer(50, bank2)

我想说

bank1.transfer(50, 222)

我只是不知道该怎么做。

【问题讨论】:

    标签: python class methods transfer bank


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-22
        • 2014-08-27
        • 1970-01-01
        • 2017-01-30
        • 2019-01-13
        • 2016-11-21
        相关资源
        最近更新 更多