2013-03-24 6 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

+1

'return str (self.getA())' или 'return str (self .__ a)' –

Смежные вопросы