[英]How do operators handle different types in python
例如, +
运算符可以处理不同的类型,如 int 和 string。 1+2
和'a'+'b'
什么区别。
+ 运算符仅使用您正在处理的对象类中的__add__
方法。 例如,如果您希望对象是由两个浮点表示的 2d 平面中的点,那么添加它们意味着获得一个具有添加坐标的新点是有道理的
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)
简单地说,在 Python 中一切都是对象。 在这里,您有两个单独的表达式:一个有两个整数,一个有两个字符串。 这是两个独立的类,它们定义了__add__()
方法,它们将处理(或不处理)不同的类型。
>>> (1).__add__('a')
NotImplemented
>>> (1).__add__(1)
2
>>> 'b'.__add__('a')
'ba'
编辑:经过一些修补后,似乎在这个实例中实际上并没有调用整数对象的add方法。 执行1 + 'a'
语句时引发的 TypeError 似乎只是1 + 'a'
,而调用(1).add__('a')
返回 NotImplemented。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.