“__str__返回非字符串”时出错,但显示输出

时间:2014-02-18 01:43:01

标签: python string

在我班上我有

def __str__(self):
     print "abc"

当我创建此类的对象a并键入print a时,它会打印abc(正确),但随后也会输出

Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    print a
TypeError: __str__ returned non-string (type NoneType)

我该如何解决?

2 个答案:

答案 0 :(得分:3)

打印值与返回之间存在差异。打印值将其显示在控制台中供用户查看,而返回意味着它可用于调用该功能的其他代码。您的__str__方法应为:

def __str__(self):
     return "abc"

答案 1 :(得分:1)

__str__应该返回一个字符串

def __str__(self):
     return "abc"

引自__str__ docs

  

由str()内置函数和print语句调用   计算对象的“非正式”字符串表示。这个   与 repr ()的不同之处在于它不必是有效的Python   表达式:可以使用更方便或简洁的表示   代替。 返回值必须是字符串对象。