2013-03-24 33 views
0

我想與私有變量一起工作,所以做了這個測試用例。python,__str__一個私有變量

class X(): 
    def __init__(self): 
     self.__a = 0 
    def __str__(self): 
     print(self.getA()) 
    def getA(self): 
     return self.__a 
x = X() 
print(x.getA()) 
print(str(x.getA())) 
print(x) 

輸出爲:

0 
0 
0 
Traceback (most recent call last): 
    File "/Users/lego90511/Documents/workspace/dummy/dummy.py", line 150, in <module> 
    print(x) 
TypeError: __str__ returned non-string (type NoneType) 

是錯誤,因爲它是私有的?因爲這對我來說沒有意義,因爲getA()有效。

回答

9

__str__()函數應該返回一個字符串,而不是打印一個。

你得到的錯誤是str(x)期望x.__str__()返回一個字符串,而你的返回什麼都沒有(NoneType)。

+0

好吧我修正了str行,所以它現在str(self.getA()),但我仍然得到相同的錯誤。 – EasilyBaffled 2013-03-24 19:39:53

+1

'return str(self.getA())'或'return str(self .__ a)' – 2013-03-24 20:44:33