大家好,欢迎来到IT知识分享网。
python中默认是只能对数字类型的对象做加法运算的,不能对两个一般对象做加法运算,但是我们可以通过重载的方式来实现两个一般对象的加法。
比如我们有一个类S,表示一个长方形的面积,现有类S的两个对象S1和S2,那我们怎么实现两个对象的相加,即要实现S1 + S2运算呢?这时我们可以通过重载__add__方法来达到这个目的。
不重载__add__方法
类S的定义如下:
class S: def __init__(self, width, height): self.width = width self.height = height
如果我们直接这样写:
S1 = S(2, 2) S2 = S(3, 3) S3 = S1 + S2
就会直接报这样的错误:
TypeError: unsupported operand type(s) for +: 'S' and 'S'
上面的报错信息告诉我们S不支持加法运算。
重载__add__方法
如果我们添加了__add__方法再做加法运算就不会报错了,如下代码:
class S: def __init__(self, width, height): self.width = width self.height = height def __add__(self, other): return self.width * self.height + other.width * other.height S1 = S(2, 2) S2 = S(3, 3) print("S1 + S2 = ", S1 + S2)
上面代码输出如下:
S1 + S2 = 13
可见S对象已经支持了加法运算。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/58901.html