Python 3.6类型错误:缺少1个必需的位置参数

时间:2018-12-07 23:12:53

标签: python python-3.x

我正在创建一个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

'

如何解决此错误,以便将余额记录到文本文件?我已经尝试过但不了解问题,因此不知道如何解决。

1 个答案:

答案 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()