python(十九)常用的特殊方法

也不明白这些特殊方法有啥用

与对象的创建、销毁有关

方法名含义
__new__()类的静态方法,用于确定是否要创建对象
__init__()构造方法,创建对象时自动调用
__del__()析构方法,释放对象时自动调用

与运算符有关——重载

方法名含义
__add__()+
__sub__()-
__mul__()*
__truediv__()/
__floordiv__()//
__mod__()%
__pow__()**
__eq__()、__ne__()、__lt__()、__le__()、__gt__()、__ge__()==、!=、<、 <=、> 、>=
__lshift__()、__rshift__()<<、>>
__and__()、__or__()、__invert__()、__xor__()&、|、~、^
__iadd__()、__isub__()+=、-=,很多其他运算符也有与之对应的复合赋值运算符
__pos__()一元运算符+,正号
__neg__()一元运算符-,负号
__contains__ ()与成员测试运算符in对应
__radd__()、__rsub__反射加法、反射减法,一般与普通加法和减法具有相同的功能,但操作数的位置或顺序相反,很多其他运算符也有与之对应的反射运算符

主要用于重载,如numpy中的__add__():在ndarray类下的,用于矩阵相加

    def __add__(self, *args, **kwargs): # real signature unknown
        """ Return self+value. """
        pass

自己写的一个重载

class Demo:
    def __init__(self, t1):
        self.t1 = t1

    def __add__(self, other):
        print('this is add function')
        return self.t1 + other


d = Demo(1)
print(d + 10)

在这里插入图片描述

与内置函数有关

方法名含义
__abs__()与内置函数abs()对应
__bool__()与内置函数bool()对应,要求该方法必须返回True或False
__bytes__()与内置函数bytes()对应
__complex__()与内置函数complex()对应,要求该方法必须返回复数
__dir__()与内置函数dir()对应
__divmod__()与内置函数divmod()对应
__float__()与内置函数float()对应,要求该该方法必须返回实数
__hash__()与内置函数hash()对应
__int__()与内置函数int()对应,要求该方法必须返回整数
__len__()与内置函数len()对应
__next__()与内置函数next()对应
__reduce__()提供对reduce()函数的支持
__reversed__()与内置函数reversed()对应
__round__()对内置函数round()对应
__str__()与内置函数str()对应,要求该方法必须返回str类型的数据

其他

方法名含义
__repr__()打印、转换,要求该方法必须返回str类型的数据
__getitem__()按照索引获取值
__setitem__()按照索引赋值
__delattr__()删除对象的指定属性
__getattr__()获取对象指定属性的值,对应成员访问运算符“.”
__getattribute__()获取对象指定属性的值,如果同时定义了该方法与__getattr__(),那么__getattr__()将不会被调用,除非在__getattribute__()中显式调用__getattr__()或者抛出AttributeError异常
__setattr__()设置对象指定属性的值
__base__该类的基类
__class__返回对象所属的类
__dict__对象所包含的属性与值的字典
__subclasses__()返回该类的所有子类
__call__()包含该特殊方法的类的实例可以像函数一样调用
__get__()定义了这三个特殊方法中任何一个的类称作描述符(descriptor),描述符对象一般作为其他类的属性来使用,这三个方法分别在获取属性、修改属性值或删除属性时被调用
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值