python特殊方法和运算符重载(番外--重载)
程序员文章站
2022-06-22 17:00:00
python的运算符实际上是通过对象的特殊方法实现的【例如】a=20b=30c=a+bd=a.__add__(b)print("c=",c)print("d=",d)执行返回 c= 50 d= 50常见的特殊方法统计说明方法说明例子__init__构造方法对象创建:p=Person()__del__析构方法对象回收__repr__,__str__打印,转换print(a......
python的运算符实际上是通过对象的特殊方法实现的
【例如】
a=20
b=30
c=a+b
d=a.__add__(b)
print("c=",c)
print("d=",d)
执行返回
c= 50
d= 50
常见的特殊方法统计说明
方法 | 说明 | 例子 |
__init__ | 构造方法 | 对象创建:p=Person() |
__del__ | 析构方法 | 对象回收 |
__repr__,__str__ | 打印,转换 | print(a) |
__call__ | 函数调用 | a() |
__getattr__ | 点号运算 | a.xxx |
__getitem__ | 索引运算 | a[key] |
__setitem__ | 索引赋值 | a[key]=value |
__len__ | 长度 | ken(a) |
每一个运算符实际都对应了相应的方法,如
运算符 | 特殊方法 | 说明 |
运算符+ | __add__ | 加法 |
运算符- | __sub__ | 减法 |
<,<=,!= | __it__,__le__,__eq__ |
比较运算符 |
>,>=,!= | __gt__,__ge__,__ne__ | |
|,^,& | __or__,__xor__,__and__ | 或,异或,与 |
<<,>> | __lshift__,__rshitf__ | 左移,右移 |
*,/,%,// | __mul__,__turediv__,__mod__.__floordiv__ | 乘,浮点数,模运算(取余),整数除 |
** | __pow__ | 指数运算 |
可以重写上面的特殊方法,即实现了“运算符的重载”
【例子】
#测试运算符重载,重写即重载
class Person:
def __init__(self,name):
self.name=name
#重写加法
def __add__(self, other):
if isinstance(other,Person):#判断是否同类对象
return "{}<++++>{}".format(self.name,other.name)
else:
return '不是同类型,不能相加'
# 重写乘法
def __mul__(self, other):
if isinstance(other, int): # 判断是否是整数型
return self.name*other
else:
return '不是同类型,不能乘法'
if __name__ == '__main__':
#重载加法
p1=Person('张三')
p2=Person('张三三')
print(p1+p2)
# 重载乘法
print(p1*5)
执行返回
本文地址:https://blog.csdn.net/qq_38934189/article/details/109033535
下一篇: html-day-2