2016-11-22 69 views
-1

此代码给了我这个错误。Python类问题

类银行:

线117,在银行

main() 
在主

format(z, '10.2f'), format(bank.MakeWithdrawal(self,amount))) 

AttributeError的

: '浮动' 对象没有属性 'MakeWithdrawal'

任何想法我哪里错了?

在此先感谢!

class Bank: 

    def __init__(self,incomingAcctNum,incomingBalance): 
    self.__acctNum = incomingAcctNum 
    self.__balance = incomingBalance 
    self.__totalDeposits = 0 
    self.__DepositCount = 0 
    self.__totalWithdrawals = 0 
    self.__WithdrawalCount = 0 

    def MakeDeposit(self,amount): 
    self.__balance = self.__balance + amount 
    self.__totalDeposits = self.__totalDeposits + amount 
    self.__DepositCount = self.__DepositCount + 1 

    def MakeWithdrawal(self,amount): 
    if (self.__balance >= amount): 
     self.__balance = self.__balance - amount 
     self.__totalDeposits = self.__totalDeposits + amount 
     self.__DepositCount = self.__DepositCount + 1 
     return True 
    else: 
     return False 

    def DisplayBalance(self): 
    self.__balance = self.__balance 
    self.__totalDeposits = self.__totalDeposits 
    self.__DepositCount = self.__DepositCount 

    def getAcctNum(self): 
    return self.__acctNum 

    def getBalance(self): 
    return self.__balance 

    def getTotalDeposits(self): 
     return self.__totalDeposits 

    def getDepositCount(self): 
    return self.__DepositCount 

    def getTotalWithdrawals(self): 
    return self.__totalWithdrawals 

    def getWithdrawalCount(self): 
    return self.__WithdrawalCount 


    def main(): 

    a = input("Enter bank account ID #1: ") 
    b = eval(input("Enter balance for bank account #1: ")) 
    c = input("Enter bank account ID #2: ") 
    d = eval(input("Enter balance for bank account #2: ")) 




    infile = open("trans","r") 
    x = (infile.readline().strip()) 
    y = (infile.readline().strip()) 
    z = eval(infile.readline()) 


    print() 
    print(format("Acct", '15s'), format("Trans Type", '20s'), 
      format("Amount", '15s'), format("Balance", '10s')) 
    print("------------------------------------------------------------") 

    while x != "X": 

     bank = (z) 


     if y == "W": 
      print(format(x, '15s'), format("Withdrawal", '15s'), 
        format(z, '10.2f'), format(bank.MakeWithdrawal())) 
     elif y == "D": 
      print(format(x, '15s'), format("Deposit", '15s'), 
        format(z, '10.2f'), format(bank.MakeDeposit(self,amount))) 
     else: 
      print(format(x, '15s'), format("Balance", '25s'), 
        format(bank.DisplayBalance(self))) 





     x = (infile.readline().strip()) 
     y = (infile.readline().strip()) 
     z = eval(infile.readline()) 
    print("-------------------------------------------------------------") 
    print() 
    print(format("ABC123, Deposits: ", '15s')) 
    print(format("ABC123, Withdrawals: ", '15s')) 
    print(format("ABC123, Ending Balance: ", '20s')) 
    print() 
    print(format("DEF456, Deposits: ", '15s')) 
    print(format("DEF456, Withdrawals: ", '15s')) 
    print(format("DEF456, Ending Balance: ", '20s')) 



main() 
+1

'银行'是一个浮动。 –

+0

让银行参考考虑的班级。您正在为其分配一个浮点值,将其实例化 – Vinay

+0

可能这条线是根本原因:z = eval(infile.readline()) –

回答

0

您的bank在这种情况下是一个浮动,我不认为这是正确的。

bank.MakeWithdrawal()需要一个金额退出。在

if y == "W": 
    print(format(x, '15s'), format("Withdrawal", '15s'), 
       format(z, '10.2f'), format(bank.MakeWithdrawal())) 

这同样适用于bank.Makedeposit()bank.MakeWithdrawal(amount)bank.DisplayBalance()不需要输入银行是被叫时的自我。即bank.DisplayBalance() 还要确保您的缩进是正确的,我不知道它是否是复制/粘贴错误,但它看起来像def main()是Bank类中的一种方法。

0

您首先说z是行z = eval(infile.readline())的浮动。

然后你说bankzbank = (z)

使bank代替Bank的一个实例,可能是在类外的主循环中。

0

创建银行类的对象并调用银行方法对其替换行bank=(z)bank=Bank(inComingAcctNum,incomingBalance)。 ,并保持在课堂外。

+0

如果我这样说,说银行没有定义 –

+0

请检查它的定义和它被访问的类的声明和范围。 –