我想知道是否有办法在运行时重载Python中的运算符。例如:
class A:
pass
a = A()
a.__str__ = lambda self: "noice"
print(str(a))
所需的输出是 "noice"
,但给定的代码使用 object
str
的实现相反,函数会产生如下内容: <__main__.A object at 0x000001CAB2051490>
.
为什么代码不使用我的函数重载的重写实现?
使用的Python版本是3.9.2
.
最佳答案
当您调用 str(a)
时,它会解析为等效于 a.__class__.__str__(a)
,而不是 a.__str__()
.
>>> A.__str__ = lambda self: "noice"
>>> str(a)
'noice'
关于python - 动态重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66738773/