python, __str__ 私有变量

0 投票
1 回答
664 浏览
提问于 2025-04-17 20:10

我正在尝试使用私有变量,所以做了这个测试案例。

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()这个方法是可以正常工作的。

1 个回答

9

这个 __str__() 函数应该返回一个字符串,而不是直接打印出来。

你遇到的错误是因为 str(x) 这个函数希望 x.__str__() 返回一个字符串,但你写的这个函数什么都没返回(返回的是空值)。

撰写回答