我正在创建一个BankAccount类,以修改每个交易的最终余额文本文件。我的初始化工作正常,但存款却没有。作为一个新程序员,我假设我缺少与面向对象的基础有关的东西。
class BankAccount:
def __init__(self, bal, file):
self.__balance = bal
self.__file = file
self.__infile = open(file, 'a')
self.__infile.write(datetime.now().strftime('Date of Account Origin: %Y-%m-%d %H:%M:%S')+'\n'))
self.__infile.write('Balance:\n')
self.__infile.write(format(float(self.__balance), '.2f')+'\n')
self.__infile.close()
def deposit(self, amount, file):
self.__balance += amount
self.__file = file
self.__infile = open(file, 'a')
self.__infile.write(('Date of Deposit: %Y-%m-%d %H:%M:%S')+'\n')
self.__infile.write('Balance:\n')
self.__infile.write(format(float(self.__balance), '.2f')+'\n')
self.__infile.close()
这是我的驱动程序文件的一部分。
def deposit(account):
money = float(input('Enter amount you would like to deposit. '))
account.deposit(money)
当前,我收到错误消息:
文件“ C:\ Users \ gonzo \ Downloads \ Driver.py”,第29行,已存入 account.deposit(money)TypeError:deposit()缺少1个必需项 位置参数:'file
'
如何解决此错误,以便将余额记录到文本文件?我已经尝试过但不了解问题,因此不知道如何解决。
答案 0 :(得分:1)
从deposit()
的定义中删除文件参数。除非由于某种原因要更改文件,否则self.__file
字段具有__init__()
函数已经存储的文件名,因此您不必在每次调用时都提供文件名。
此外,“ __ infile”也不必是对象中的字段。两种方法都可以打开,使用和关闭它。没有理由坚持下去。
这是简化的deposit()函数的外观:
def deposit(self, amount, file):
self.__balance += amount
__infile = open(file, 'a')
__infile.write(('Date of Deposit: %Y-%m-%d %H:%M:%S')+'\n')
__infile.write('Balance:\n')
__infile.write(format(float(self.__balance), '.2f')+'\n')
__infile.close()