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