class Worker:
def __init__(self, pay):
self.pay = pay
def __len__(self):
return "{}".format(len(str(self.pay)))
worker1 = Worker(1000)
print(worker1.__len__())
print(len(worker1))
Run Code Online (Sandbox Code Playgroud)
/home/minmin/PycharmProjects/myproject/venv/bin/python /home/minmin/PycharmProjects/myproject/mro.py
4
Traceback (most recent call last):
File "/home/minmin/PycharmProjects/myproject/mro.py", line 35, in <module>
print(len(worker1))
TypeError: 'str' object cannot be interpreted as an integer
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
当我打印调用 dunder 方法 ( worker1.__len__()) 时,它在控制台中返回 4。但是当我尝试使用len(worker1)相同的实例 ( worker1)使用 print函数时,它会引发错误。为什么会这样?