魔术方法

Day31 魔术方法

什么是魔术方法?魔术方法分类、运算符重载的魔术方法举例、容器相关的魔术方法、可调用对象

08-22侠课岛    基础入门       

后端/后端/Python 由浅入深入门 18     0     166

总结

1.什么是魔术方法

  • 在Python中以两个下划线开头和结尾的方法被称为魔术方法,魔术方法都是一些内置方法;

2.基本魔术方法

  • __new__:是在一个对象实例化的时候所调用的第一个方法,用来创建类并返回这个类的实例;

  • __init__:构造器,是一个初始化方法,在一个实例被创建之后调用;

  • __del__:析构器,当一个实例被销毁的时候调用的方法;

  • __bool__:如果对象实现了__bool__方法,那么返回结果,非0为真,如果没有实现__bool__方法,调用__len__方法,返回非0为真;

  • __hash__:返回一个整数,表明对象可以hash;

  • __repr__:返回对象的字符串表达式,如果没有实现,直接返回对象内存地址字符串;

  • __str__:str()、print()、format()函数打印对象字符串,会直接调用__str__方法,如果没有实现,会调用__repr__方法

  • __bytes__:定义当被 bytes() 调用时的行为;

  • __format__:定义当被 format() 调用时的行为;

3.有关属性魔术方法

  • __getattr__:定义当用户试图获取一个不存在的属性时的行为;

  • __setattr__:定义当一个属性被设置时的行为;

  • __getattribute__:定义当该类的属性被访问时的行为;

  • __delattr__:删除一个属性时执行的方法;

  • __dir__:定义当 dir() 被调用时的行为;

  • __get__:定义当描述符的值被取得时的行为;

  • __set__:定义当描述符的值被改变时的行为;

  • __delete__:定义当描述符的值被删除时的行为;

4.运算符相关魔术方法

  • __add__:定义加法的方法;

  • __sub__:定义减法的方法;

  • __mul__:定义乘法的方法;

  • __truediv__:定义除法的方法;

  • __floordiv__:定义整数除法的行为://;

  • __mod__:定义取模算法的行为:%;

  • __divmod__:定义当被 divmod() 调用时的行为;

  • __pow__:定义当被 power() 调用或 ** 运算时的行为;

  • __lshift__:定义按位左移位的行为:<<;

  • __rshift__:定义按位右移位的行为:>>;

  • __and__:定义按位与操作的行为:&;

  • __xor__:定义按位异或操作的行为:^;

  • __or__:定义按位或操作的行为:|;

5.比较操作符相关魔术方法

  • __eq__:定义等于号的方法,等价于==;

  • __lt__:定义小于号方法,等价于<;

  • __gt__:定义大于号方法,等价于>;

  • __le__:定义小于等于号的行为,等价于 <= ;

  • __ne__:定义不等号的行为,等价于!= ;

  • __ge__:定义大于等于号的行为,等价于 >= ;

6.容器相关的魔术方法

  • __len__:定义当被 len() 调用时的行为(返回容器中元素的个数);

  • __iter__:定义当迭代容器中的元素的行为;

  • __getitem__:获取容器中的元素,相当于 self[key];

  • __setitem__:设置容器中的元素,相当于 self[key] = value;

  • __delitem__:删除容器中的某个元素,相当于 del self[key];

  • __reversed__:定义当被 reversed() 调用时的行为;

  • __contains__:定义当使用成员测试运算符(in 或 not in)时的行为;

7.可调用对象

  • Python中,实现了__call__方法的对象都是可调用对象;

  • __call__:允许一个类的实例像函数一样被调用:x(a, b)调用为 x.__call__(a, b)

因为Python的中魔术方法有很多,我们一下子也记不了那么多,所以我们可以先掌握最常用的,其他的方法以后在用的过程中再慢慢熟悉;

本教程图文或视频等内容版权归侠课岛所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、转贴或以其他方式复制发布或发表。

评价

18

本课评分:
  •     非常好
难易程度:
  •     适中的

内容目录



|
教程
粉丝
主页

签到有礼

已签到2天,连续签到7天即可领取7天全站VIP

  • 1
    +2 金币
  • 2
    +3 金币
  • 3
    +5 金币
  • 6
    +7 金币
  • 5
    +6 金币
  • 4
    暖心福利
    自选分类VIP ×1天
  • 7
    惊喜大礼

    自选分类VIP ×3天 +20金币
  • 持续签到 +8 金币

金币可以用来做什么?