在我班上我有
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)
我该如何解决?
答案 0 :(得分:3)
打印值与返回之间存在差异。打印值将其显示在控制台中供用户查看,而返回意味着它可用于调用该功能的其他代码。您的__str__
方法应为:
def __str__(self):
return "abc"
答案 1 :(得分:1)
__str__
应该返回一个字符串
def __str__(self):
return "abc"
引自__str__
docs,
由str()内置函数和print语句调用 计算对象的“非正式”字符串表示。这个 与 repr ()的不同之处在于它不必是有效的Python 表达式:可以使用更方便或简洁的表示 代替。 返回值必须是字符串对象。