2014-02-18 55 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 表達式:可以使用更方便或簡潔的表示法代替 。 返回值必須是一個字符串對象。

相關問題