小编Nar*_*rta的帖子

从Python中的__str__方法返回int

我知道,str()方法的目的是返回一个对象的字符串表示,所以我想测试如果我强迫它做其他事情会发生什么.

我创建了一个类和一个对象:

class MyClass(object):

    def __str__(self, a=2, b=3):
        return a + b

mc = MyClass()
Run Code Online (Sandbox Code Playgroud)

我打电话的时候:

print(str(mc))
Run Code Online (Sandbox Code Playgroud)

口译员抱怨说:

TypeError: __str__ returned non-string (type int)
Run Code Online (Sandbox Code Playgroud)

这是完全可以理解的,因为str()方法试图返回int.

但如果我尝试:

print(mc.__str__())
Run Code Online (Sandbox Code Playgroud)

我得到输出:5.

那么为什么解释器允许我在__str__直接调用时返回int ,而不是当我使用str(mc)时 - 正如我所理解的那样 - 也被评估为mc.__str__().

python string cpython python-internals

13
推荐指数
2
解决办法
1184
查看次数

标签 统计

cpython ×1

python ×1

python-internals ×1

string ×1