gpt4 book ai didi

python - 是否可以为 native 数据类型重载运算符?

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:04 26 4
gpt4 key购买 nike

例如,如果我尝试这样做:

a_string + an_int

... 其中 a_string 是“str”类型,an_int 是“int”类型,或者:

an_int + a_string

会出现 TypeError 因为没有类型的隐式转换。我知道如果我使用我自己的 int 和 string 子类,我将能够在我的类中重载 __add__() 方法来实现这一点。

不过,出于好奇,我想知道:是否可以在intstr的类定义中重载+运算符,从而__add__(int,str)__add__(str,int) 自动将它们连接成字符串?

如果不是,程序员不应重载 native 数据类型的运算符的原因是什么?

最佳答案

一般来说,如果不恢复到 C 级 API,您就无法修改内置类型的属性(参见 here)。但是,您可以子类化内置类型并对新类型执行您想要的操作。对于您特别提出的问题(基于添加字符串),您将修改 __add__ and __radd__ :

class Int(int):
def __add__(self, other):
return Int(int(str(self) + str(other)))

def __radd__(self, other):
return Int(str(other) + str(self))

>>> Int(5) + 3
53

>>> 3 + Int(5) + 87
3587

关于python - 是否可以为 native 数据类型重载运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38831695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com