Python——魔术方法

魔术方法简单来说就是:在什么样的情况下,自动触发什么样的的魔法函数。这样理解魔法函数是不是简单了很多
分为:操作类魔法函数、算术相关的魔法函数、描述符相关的魔法函数、属性相关的魔法函数

操作类魔法函数

  • __ new (cls[ , …])
    这是对象实例化时第一个被调用的方法,第一个参数不是self 而是类 cls,其他参数会传递给
    init __方法。这个方法一般不需要写出来,可以当他完全不存在,但是当继承一个不可变的类型时需要把它写出来。

  • __ init __: 对象实例化时,自动调用的函数,如果当前类中没有,则向父类中查找。

  • __ call __ 实例化对象当函数使用的时候自动调用

  • __ str __ 实例化对象被当作字符串的时候自动调用

  • __ repr __ 实例化对象被当作字符串的时候自动调用,用法和上面过一个一样

属性相关的魔术方法

  • __ getattr __(self,name) 当试图获取一个不存在的成员时自动掉用

  • __ getattribute __(self,name) 当该类的成员被访问时自动调用

  • __ setattr__(self, name, value) 当一个成员被设置时自动调用。参数self:用来获取当前对象;参数name:被设置的属性名称,以字符串的形式出现;参数value:对属性名称设置的值。
    注意:不能对成员进行直接赋值操作,否则引发死循环,如要避免,调用父类魔法函数

  • __ del __ (self,name) 当一个成员被删除时,自动调用。

描述符相关的魔法函数

就是将某种特殊类型的类指派给另一个类的属性
特殊类型的类必须在类里面定义 __ get__() 、__ set__() 、__ delete __()这三个特殊方法中的任意一个

  • __ get__(self, instance, owner) :访问成员时自动调用
  • __set __(self, instance, value): 对成员进行赋值操作时自动调用,不返回任何内容
  • __ delete__(self, instance):对成员进行删除时自动调用,不返回任何内容
    参数 self 是描述符类自身的实例,参数 instance 是类实例对象,参数 ower 是这个描述符的拥有者所在的类本身


一般而言这三种特殊的魔法函数和描述符property()一同使用,其中关系自己学的有点小懵逼,这个知识点暂且写在这个笔记里。

算术相关的魔法函数

常用的算术魔法函数,用法大同小异。

  • __ add__(self, other):进行加法时自动调用: +
  • __ sub__(self,other):进行减法时自动调用: -
  • __ mul__(self,other)进行乘法时自动调用: *
  • __ truediv __(self,other)进行数学除法时自动调用: /
  • __ floordiv __(self, other)进行整数除法自动调用://

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值