2016-11-22 70 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

請檢查它的定義和它被訪問的類的聲明和範圍。 –