2016-02-08 37 views
2

我剛剛在Python中學習類,在過去的一天中,我被困在下面。初學者Python類 - 使用用戶輸入更改屬性值

我正嘗試使用用戶輸入(來自main()函數)來更改類中屬性的值。

我已經經歷了@property和@ name.setter方法,它們允許您更改私有屬性的值。

但是我想了解如何使用用戶輸入來更改非私有屬性的值。

我想出了下面,但它似乎並沒有工作。我運行該程序後,該屬性的值保持不變。你有什麼想法,爲什麼?

class Person(object): 

    def __init__(self, loud, choice = ""): 
     self.loud = loud 
     self.choice = choice 

    def userinput(self): 
     self.choice = input("Choose what you want: ") 
     return self.choice 

    def choiceimpl(self): 
     self.loud == self.choice 

    def main(): 

     john = Person(loud = 100) 

     while True: 

      john.userinput() 

      john.choiceimpl() 

      print(john.choice) 
      print(john.loud) 

    main() 
+0

嗨@IliasP,你有沒有想過使用'raw_input()'而不是輸出? –

+1

Hi @AndyK - 感謝您的快速回復。其實我做了TimK下面提出的建議,它工作得很好。再次感謝。 – IliasP

回答

4

choiceimpl您使用==,你應該使用=

+0

謝謝Timk。它正在工作。那真的很無聊 - 對不起! – IliasP

0

如前所述,您正在使用=而不是=的比較。 同樣,您在userinput中返回self.choice作爲返回值,但從不使用它,因爲您將self.choice設置爲等於輸入。

較短例如:

class Person: 
    def __init__(self, loud): 
     self.loud = loud 
    def set_loud(self): 
     self.loud = input("Choose what you want: ") 
def main(): 
    john = Person(100) 
    while True: 
     john.set_loud() 
     print(john.loud) 
main() 
0

1)變化: '=='(比較運算),以 '='(分配)

2)內部的類: def choiceimpl(self,userInp): self.loud = self.userInp

3 )外部類

personA = Person(loud)       # Create object 
userInp = raw_input("Choose what you want: ") # Get user input 
personA.choiceimpl(userInp)     # Call object method