0

私はプライベート変数を操作しようとしているので、このテストケースを作成しました。

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()が機能するため、それは私には意味がありません。

4

1 に答える 1

9

この__str__()関数は、文字列を出力するのではなく、文字列を返す必要があります。

発生するエラーは、文字列を返すことをstr(x)期待x.__str__()しているのに対し、文字列は何も返さない(NoneType)というものです。

于 2013-03-24T18:54:32.180 に答える