python3基础之如何重载运算符(实例)

    什么是运算符重载?

    当我们将两个数字1相加时结果返回2,而当我们将两个字符串相加时结果却是'11'。为什么同样都是加法执行的方式却是不一样呢?就是因为数字类(如int)和字符串类都重载了‘+’运算符来实现各自的加法操作。运算符重载就是根据类的需求重新定义运算符的用法。

    

    为什么要重载运算符?

    正如上面所说两个数字1相加结果为2,这样是合理的。两个字符串1相加为2...好吧也能说的过去,但是这让两个非数字的字符串相加怎么办?难道要将它们全转为ascii码再相加吗。很显然字符串相加还是返回两个字符串连接的字符串更为合理。所以同样的运算符在不同对象的运算中作用是不同的,这时就必须重载这个运算符,让它符合要求。


    如何重载运算符?

    前面说了一堆废话,还不是为了说这个。直接看个例子吧:

    image.png

    测试代码中创建了一个类Water。通过重写__add__函数,重载了 “+”运算符。在函数中返回了一个新的Water对象,这个Water对象的weight是两个相加Water对象的weight之和(想表达的意思就是两个一滴水相加还是一滴水)。

    明明是重载“+”运算符,为什么重写的是__add__函数呢?其实从名字也能看出来add就是加的意思,__add__是特殊的函数,它对应的就是“+”运算符。类似的还有

    image.png

    再重载了乘号试试:

image.png

    这次重载乘号返回的是一个字符串,执行乘法操作确实也输出了这个字符串。虽然这个乘法没有意义,但说明了重载“*”运算符的操作成功了。

    

演示站
上一篇:python3基础之类的继承
下一篇:python3基础之迭代器的使用

发表评论