当我 运行 在 python 中使用 while 循环的命令时,我遇到了金额问题

I am having issues with the amount when I run the command with while loop in python

我导入了一个 json 文件并为 super rice 的 rice bank 帐户创建了一个 while 循环。我在父代码下创建 def 但遇到错误:TypeError: withdraw_money() missing 1 required positional argument: 'amount'。我还尝试为每个子类设置新的一周新值,超级大米帐户和预付将附加 500,普通大米 A 附加 0。由于错误,我坚持使用 SuperRiceAccount.withdraw_money(amount),但我仍然需要弄清楚新一周的功能。谁能帮帮我?

下面是我的代码

class BaseAccount:
      def __init__(self, account_id, account_type, full_name, birthday, balance,amount=500):
        self.account_id = account_id
        self.account_type = account_type
        self.full_name = full_name
        self.birthday = birthday
        self.balance = balance
        self.amount = amount

    def account_info(self):
        for p in data ['accounts']:
            print('You have successfully withdrawn 500 grams from the account.')
            print('Account ID:' + p['account_id'])
            print('Account Type:' + p['account_type'])
            print('Full Name:' + p['full_name'])
            print('Birthday:' + p['birthday'])
        print('Balance: ' + self.balance + ' left')

    def withdraw_money(self, amount):
        self.balance = self.balance - amount(500)
        for p in data['accounts']:
            print('You have successfully withdrawn 500 grams from the account.')
            print('Account ID:' + p['account_id'])
            print('Account Type:' + p['account_type'])
            print('Full Name:' + p['full_name'])
            print('Birthday:' + p['birthday'])
            print('Balance: ' + self.balance + ' left')

    def new_week(self):
        return

class SuperRiceAccount(BaseAccount):
    def __init__(self, account_id, account_type, full_name, birthday, balance):
        super().__init__(account_id, account_type, full_name, birthday, balance)
        if self.balance >= 2000:
            print ('You still have ', self.balance, ' left.')
        else:
            print('You do not have enough balance.')

    def new_week(self):
        if initial_balance < 2000:
            self.balance = self.balance + 500
            print('Your new balance is ', self.balance, ' left')

while True:
    print('( 1 ) List All Accounts')
    print('( 2 ) Withdraw Rice from an Account')
    print('( 3 ) New Week')
    print('( 4 ) Exit')
    print('')
   option = int(input('Enter your choice: '))
    if option == 1:
      for p in data['accounts']:
          print('Account ID:'+ p['account_id'])
          print('Account Type:' + p['account_type'])
          print('Full Name:' + p['full_name'])
          print('Birthday:' + p['birthday'])
          print('Balance:'+ str(p["balance"]))
          print('')

    if option == 2:
        print('')
        i = input('Enter Account ID:')
        print('')
        for p in data['accounts']:
            if p ['account_id'] == i:
                print('Account ID:' + p['account_id'])
                print('Account Type:' + p['account_type'])
                print('Full Name:' + p['full_name'])
                print('Birthday:' + p['birthday'])
                print('Balance: ' + str(p["balance"]) + ' left')
                print('')
            else:
                amount = input('Input 500 to withdraw 500 grams from this account:')
                SuperRiceAccount.withdraw_money(amount)
                SuperRiceAccount.account_info(amount)
                for p in data['accounts']:
                    print('Account ID:' + p['account_id'])
                    print('Account Type:' + p['account_type'])
                    print('Full Name:' + p['full_name'])
                    print('Birthday:' + p['birthday'])
                    print('Balance:' + str(p["balance"]))
                    print('')

调用方法 withdraw_money 时应使用 SuperRiceAccount 对象。
发生的情况是,当您调用该函数时,金额作为第一个参数 self 传递,因此缺少第二个参数 amount


通过初始化修复它:

bank = SuperRiceAccount([PASS HERE INITIALIZATION PARAMETERS])

并调用:

bank.withdraw_money(amount)
bank.account_info(amount)