#python #class
#python #класс
Вопрос:
нужна помощь по поводу моего кода (python):
class Account:
def __init__(self, money):
self.money= money
def __str__(self):
return f'Money in the bank: {self.money} dollar'
def withdraw(self,withdraw):
self.withdraw = withdraw
money = self.money-self.withdraw
return money
print(Account.withdraw(20000,1000))
Что я хочу от кода выше, так это то, что код напечатает мои оставшиеся деньги (19000), но я всегда получал ошибку
объект ‘int’ не имеет атрибута ‘withdraw’.
Я много чего перепробовал за 4 часа, но не получил удовлетворительного результата.
Это мой первый вопрос на этом форуме, прошу прощения, если форматирование неправильное. Заранее благодарю вас 🙂
Комментарии:
1.Предполагается, что вы должны создавать экземпляры объектов для их использования. Точно так же, как
mylist = list()
создается список, вам нужно создать объект account ,account = Account()
. Однако, обратите внимание,account.withdraw(whatever)
будет работать только один раз, потому что при этом вы затеняете методdef withdraw
внутри себяself.withdraw = withdraw
, поэтому при втором выходе вы получите TypeError, потомуint
что объекты нельзя вызывать. Почему выself.withdraw
все равно присваиваете a?
Ответ №1:
Ниже я внес некоторые небольшие изменения в ваш код, и он работает так, как вы ожидаете.
-
Определена новая переменная WithdrawMoney для отслеживания суммы вывода.
-
Некоторые изменения в формате строки.
-
Каждый раз возвращалось обновленное количество.
class Account: def __init__(self, money): self.money= money self.withdrawMoney = 0 def __str__(self): return "Money in the bank: {} dollar".format(self.money) def withdraw(self,withdrawMoney): self.withdrawMoney = withdrawMoney self.money = self.money-self.withdrawMoney return self.money acc = Account(20000) print(acc.withdraw(1000)) # 19000 print(acc.withdraw(1000)) # 18000