在python中,操作符如何处理不同的类型

在python中,操作符如何处理不同的类型,python,Python,例如,+运算符可以处理不同的类型,如int和string。1+2和'a'+'b'之间的区别是什么简单地说,在Python中,一切都是对象。这里有两个单独的表达式:一个包含两个整数,另一个包含两个字符串。这是两个独立的类,它们定义了\uuuu add\uuu()方法,该方法将处理(或不处理)不同的类型 >>> (1).__add__('a') NotImplemented >>> (1).__add__(1) 2 >>> 'b'.__add__

例如,
+
运算符可以处理不同的类型,如int和string。
1+2
'a'+'b'

之间的区别是什么简单地说,在Python中,一切都是对象。这里有两个单独的表达式:一个包含两个整数,另一个包含两个字符串。这是两个独立的类,它们定义了
\uuuu add\uuu()
方法,该方法将处理(或不处理)不同的类型

>>> (1).__add__('a')
NotImplemented
>>> (1).__add__(1)
2
>>> 'b'.__add__('a')
'ba'

编辑:经过一点修改,似乎integer对象的add方法在这个实例中实际上没有被调用。执行
1+'a'
语句时引发的TypeError似乎只是字面上的
1+'a'
的结果,而调用
(1).add_uuu('a')
返回NotImplemented。

运算符只使用您正在处理的对象类中的
\uuu add_uuu
方法。例如,如果希望对象是由两个浮点数表示的二维平面中的点,则添加这些点意味着获得一个新的点,并添加如下坐标

class Point:
    def __init__(self, x,y):
        self.x = x
        self.y = y
   
    def __add__(self, other):
        return Point(self.x+other.x, self.y+other.y)

p = Point(1,1)+Point(2,1)
p.x,p.y
--> (3,2)

它们各自实现自己的功能