Python中的__str__方法

时间:2013-11-27 20:47:48

标签: python string methods

我无法让这个__str__工作。 我创建了一个类,

class Hangman : 

然后

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

程序中有一个init语句和赋值,但是我无法使用它! 我能做到的唯一方法是这样做,但肯定是使用__str__

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

代码:

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
>>> 

使用print方法,输出:

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

4 个答案:

答案 0 :(得分:3)

Hangman.__str__(hangman)

这一行只是调用 __str__方法。这是顺便说一句。这是首选方法(一般情况下,不要直接调用特殊方法):

str(hangman)

str__str__方法只是对象转换为字符串,但不打印它。例如,您也可以将其记录到文件中,因此打印并不总是合适的。

相反,如果你想打印它,只需打印它:

print(hangman)

print会自动在对象上调用str(),因此使用类型的__str__方法将其转换为字符串。

答案 1 :(得分: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“print b”时,Python将str(b)调用到   获取b的字符串表示形式。如果b的类有__str__   方法,str(b)成为对b .__ str __()的调用。这将返回字符串   打印。

答案 2 :(得分:0)

Hangman.__str__(hangman)不是打印hangman字符串表示的命令,它是一个表达式,其值为hangman的字符串表示形式。

如果您在交互式提示符下手动键入,则会获得打印表达式的值,因为交互式提示会为方便起见。在脚本中(或在您调用的函数中)拥有该行不会打印任何内容 - 您需要实际告诉python使用print(hangman)打印它。

答案 3 :(得分: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