2016-04-22 1 views
0

私は基本的なATMを作成するいくつかのPythonコードに取り組んでいます。私が抱えている問題は、実際の残高番号の代わりに、 "<"のAccount.balanceで0x012CBC90>という印刷結果を得ることができないということです。これまではjsmithを使ってテストしてきました。後で問題を引き起こす可能性のある他の問題をお気軽にお聞かせください。2つのクラスが含まれている場合に__repr__を正しく使用する方法

class Account: 

    def __init__(self,user,pin,balance): 
     self.user = user 
     self.pin = pin 
     self.balance = int(balance) 

    def get_user(self): 
     return self.user 

    def get_pin(self): 
     return self.pin 

    def balance(self): 
     return int(self.balance) 

    def setBalance(self,newBalance): 
     self.balance = newBalance 

    def __repr__(self): 
     return str(self.user) + " " + str(self.pin) + " " + str(self.balance) 


class ATM: 

    def withdraw(self,Person,amount): 
     result = Person - amount 
     return result 


    def check(self,Person): 
     Person = Account.balance 
     return str(Person) 

    def transfer(self,id1,id2): 
     pass 

    def __str__(self): 
     return self 



    def main(): 

    Chase = ATM() 

    Database = [] 

    Teron_Russell = Account("trussell",1738,0) 
    Joe_Smith = Account("jsmith",1010,1350) 

    print(Teron_Russell) 

    Database.append(Teron_Russell) 
    Database.append(Joe_Smith) 

    print("Welcome to the ATM") 
    id = input("Please enter your user ID: ") 
    pin = input("Enter your pin: ") 
    chosen = "" 

    for i in Database: 
     print("Test1") 
     name = Account.get_user(i) 
     print(name) 
     checkPin = Account.get_pin(i) 
     print(checkPin) 
     if id == name and pin == checkPin: 
      chosen = i 

    choice = input("What would you like to do. (Type 'Check','Withdraw','Transfer': ") 

    if(choice == "Check" or "check"): 
     print(Chase.check(chosen)) 



    # if(choice == "Withdraw" or "withdraw"): 
    #  wAmount = eval(input("How much would you like to Withdraw: ")) 
    # # Chase.withdraw(Account.balance,) 
    # elif(choice == "Check" or "check"): 
    #    Chase.check() 
    # else: 
    #  print("Invalid Choice!") 

if __name__ == "__main__": 
    main() 

答えて

2

変数とメソッドの名前を同じ名前にすると、インタープリタはどちらを使用するのか混乱します。メソッドまたは変数balanceの名前を変更しても、この問題は発生しません。さらに、これはjavaではないため、何の理由もなくクラスを使用すべきではありません。インスタンス変数を使用していないので、そのクラスの中にこれらのメソッドをすべて持たせるのは無意味です。

+0

ありがとう、私はそれらを同じ名前を付けたことに気付かなかった。 – WannaBeCoder

関連する問題