在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)
它们各自实现自己的功能