可以更改Python中内置类的dunder方法吗?

可以更改Python中内置类的dunder方法吗?,python,Python,我是python初学者,正在阅读dunder方法。是否有可能更改类的dunder方法,如int或str 例如,我是否可以将int类的dunder方法\uuuuu add\uuuuu更改为执行乘法而不是加法?因此,如果我键入3+4,输出为12?您可以创建子类,但值得指出的是,这可能是个坏主意,因为没有人合理地期望add执行乘法: class FunkyInt(int): def __add__(self, other): return FunkyInt(self * oth

我是python初学者,正在阅读dunder方法。是否有可能更改类的dunder方法,如
int
str


例如,我是否可以将
int
类的dunder方法
\uuuuu add\uuuuu
更改为执行乘法而不是加法?因此,如果我键入3+4,输出为12?

您可以创建子类,但值得指出的是,这可能是个坏主意,因为没有人合理地期望add执行乘法:

class FunkyInt(int):
    def __add__(self, other):
        return FunkyInt(self * other)

f = FunkyInt(3)
print(f + 4)
# 12

更正了谢谢你的回答。但正如@Tomerikoo所指出的,我想以某种方式做到
3+4
,但
FunkyInt(3)+4
是唯一可能的方法。@AjayJain你为什么要这么做?解释一下你的用例事实上我只是在玩弄dunder的方法,并认为这是可能的。如果你认为我浪费了你的时间,我很抱歉。这回答了你的问题吗?简而言之,答案是-不。即使你做了一些像上面链接中被接受的答案那样的黑客行为,你仍然需要做
int(3)+4
。如果不改变Python本身(创建自己的实现),就无法改变文本的行为: