2013-11-27 68 views
1

我無法設法讓這個__str__工作。 我創建了一個類,Python中的__str__方法

class Hangman : 

然後

def __str__(self) : 
return "WORD: " + self.theWord + "; you have " + \ 
self.numberOfLives + "lives left" 

有在節目中一個初始化語句和分配,但我不能得到的東西而努力! 我能做到這一點的唯一方法就是通過這樣做,但肯定有什麼用__str__

def __str__(self) : 
    print("WORD: {0}; you have {1} lives left".\ 
    format(self.theWord,self.numberOfLives)) 

代碼點:使用的打印方法

>>> 
Enter a word Word 
Enter a number 16 
>>> 

theWord = input('Enter a word ') 
numberOfLives = input('Enter a number ') 
hangman = Hangman(theWord,numberOfLives) 
Hangman.__str__(hangman) 

輸出,輸出:

>>> 
Enter a word word 
Enter a number 16 
WORD: word; you have 16 lives left 
>>> 
+0

定義「無法得到工作的事」 – Sinkingpoint

+0

遺憾,它只是剛剛將不打印像它猜想 – JamesDonnelly

+0

然後舉例說明實際產出與預期產出。 – Sinkingpoint

回答

3
Hangman.__str__(hangman) 

這條線將只是調用__str__方法。所以這個順便說一句。這是做它的首選方式(一般不直接調用特殊的方法):

str(hangman) 

str__str__方法都只是爲了轉換對象轉換成字符串,但不打印它。例如,您可以將其記錄到文件中,因此打印並不總是合適的。

相反,如果你想打印出來,只是打印:

print(hangman) 

print會自動調用該對象上str(),因此使用該類型的__str__方法將其轉換爲字符串。

+0

Ahhhh!簡直不敢相信。非常感謝! – JamesDonnelly

0

像這樣的職位說:https://mail.python.org/pipermail/tutor/2004-September/031726.html

>>> class A: 
... pass 
... 
>>> a=A() 
>>> print a 
<__main__.A instance at 0x007CF9E0> 

If the class defines a __str__ method, Python will call it when you call 
str() or print: 
>>> class B: 
... def __str__(self): 
...  return "I'm a B!" 
... 
>>> b=B() 
>>> print b 
I'm a B! 

報價

總結一下:當你告訴Python來 「打印B」,Python會自動調用STR(二) 得到的字符串表示灣如果b的類具有__str__ 方法,則str(b)將成爲對b .__ str __()的調用。這將返回字符串 以進行打印。

0

Hangman.__str__(hangman)是不打印的hangman字符串表示一個命令,它的計算結果爲的hangman字符串表示的表達式。

如果您在交互式提示符下手動輸入該值,則會獲得打印表達式的值,因爲交互式提示符會將其作爲一種便利來使用。在腳本中(或在您調用的函數中)擁有該行將不會打印任何內容 - 您需要實際告訴python打印它,並使用print(hangman)

0

此代碼:

class Hangman(object): 

    def __init__(self, theWord, numberOfLives): 
     self.theWord = theWord 
     self.numberOfLives = numberOfLives 

    def __str__(self) : 
     return "WORD: " + self.theWord + "; you have " + \ 
       self.numberOfLives + " lives left" 

if __name__ == '__main__': 
    theWord = input('Enter a word ') 
    numberOfLives = input('Enter a number ') 
    hangman = Hangman(theWord,numberOfLives) 
    print(hangman) 

輸出:

>>> 
Enter a word word 
Enter a number 16 
WORD: word; you have 16 lives left