繁体   English   中英

运算符如何处理python中的不同类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM