2014-02-18 37 views
1

在我的课堂我有错误,其中“__str__返回非字符串”,但显示输出

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) 

我该如何解决它?

回答

3

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

def __str__(self): 
    return "abc" 
1

__str__应该返回一个字符串

def __str__(self): 
    return "abc" 

__str__ docs报价,

由STR(被叫)内置函数和print语句 计算“非正式“一个对象的字符串表示。这个 不同于repr(),因为它不一定是有效的Python 表达式:可以使用更方便或简洁的表示法代替 。 返回值必须是一个字符串对象。

相关问题