110:特殊方法和运算符重载

###特殊方法和运算符重载

Python 的运算符实际上是通过调用对象的特殊方法实现的。比如:

a = 20
b = 30
c = a+b
d = a.__add__(b)
print("c=",c)
print("d=",d)

输出结果:

c= 50
d= 50

常见的特殊方法统计如下:

每个运算符实际上都对应了相应的方法,统计如下:

我们可以重写上面的特殊方法,即实现了“运算符的重载”。

# 测试运算符的重载

class Person:
    def __init__(self, name):
        self.name = name

    def __add__(self, other):
        if isinstance(other, Person):
            return "{0}--{1}".format(self.name, other.name)
        else:
            return "不是同类对象,不能相加"

    def __mul__(self, other):
        if isinstance(other, int):
            return self.name * other
        else:
            return "不是同类对象,不能相乘"


p1 = Person("高淇")
p2 = Person("高希希")

x = p1 + p2
print(x)
print(p1*3)

输出结果:

D:\work\python\three\venv\Scripts\python.exe D:\work\python\three\mypy22.py 
高淇--高希希
高淇高淇高淇

进程已结束,退出代码0

 

posted @ 2022-11-21 10:42  竹蜻蜓vYv  阅读(19)  评论(0编辑  收藏  举报