【问题标题】:Python OOP, how to keep adding a number Instance attribute?Python OOP,如何不断添加一个数字实例属性?
【发布时间】:2022-01-01 11:38:46
【问题描述】:

尝试存入钱包,第一次调用成功,然后当我再次调用存款函数时,它会给我错误。
TypeError: 'int' object is not callable 有什么解决办法吗?

class Bank():

    def __init__(self,wallet):
        self.wallet = wallet

    def withdraw(self,withdraw):
        self.withdraw = withdraw

    def deposit(self, deposit):
        self.deposit = deposit
        self.wallet += self.deposit




bank = Bank(0)

bank.deposit(500)
print(bank.wallet)
bank.deposit(500)
print(bank.wallet)

【问题讨论】:

  • 你为什么要self.deposit = deposit?一旦你完成了 bank.deposit 不再是一个方法,它就是一个 int。
  • 我假设每次我在一个类中创建一个函数时,我都需要 self.对于每个变量。
  • 您在__init__ 方法中经常看到类似的行,因为__init__ 是您定义对象的所有属性的地方,但您通常不想在__init__ 之外设置新属性, __init__ 中设置的所有属性也不需要与函数参数为 1:1。例如,您的 Bank.__init__ 可以始终将 self.wallet = 0 设置为开头,并且根本不需要 wallet 参数。
  • 啊,好的,我会记下来的,非常感谢您澄清这一点!

标签: python python-3.x oop


【解决方案1】:

您正在将您的存款函数重新分配给该行中的一个整数。 self.deposit = deposit。删除那个:)

【讨论】:

  • 同理,去掉self.withdraw = withdraw
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 2014-12-07
  • 2012-03-20
相关资源
最近更新 更多