欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python特殊方法和运算符重载(番外--重载)

程序员文章站 2022-03-11 16:17:19
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) 

执行返回

python特殊方法和运算符重载(番外--重载)

本文地址:https://blog.csdn.net/qq_38934189/article/details/109033535