博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.__魔法方法__开会喽
阅读量:4358 次
发布时间:2019-06-07

本文共 5093 字,大约阅读时间需要 16 分钟。

1 python魔法方法详解  2   3     据说,Python 的对象天生拥有一些神奇的方法,他们总被双下划线锁包围,他们是面向对象的python的一切.  4   5     他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法的某一个,那么这个方法就会在特殊的情况下被python调用.  6 你可以定义自己想要的行为,而这一切都是自动发生的.  7   8     python 的魔术方法非常强大,然而随之而来的则是责任,了解正确的方法去使用非常重要.  9  10  11 各魔法方法介绍如下: 12  13 a.基本魔法方法: 14     1.__new__(cls[,...]) 15         a.__new__ 是在一个对象实例化的时候所调用的第一个方法. 16         b.它的第一个参数是这个类,其他的参数是用来直接传递给__init__方法. 17         c.__new__ 决定是否使用该__init__方法,因为__new__可以调用其他类的构造方法或者直接返回别的实例化对象来作为本类的实例, 18             如果__new__没有返回实例对象,则__init__不会被调用. 19         d.__new__ 主要是用于继承一个不可变的类型,不如一个tuple或者string 20  21     2.__init__(self[,...]) 构造器,当一个实例被创建的时候调用的初始化方法 22     3.__del__(self) 析构器,当一个实例被销毁的时候调用的方法 23     4.__call__(self[,args...]) 允许一个类的实例像函数一样被调用: x(a,b) 调用 x.__call__(a,b) 24     5.__len__(self) 定义当被 len() 调用时的行为 25     6.__repr__(self) 定义当被 repr() 调用时的行为 26     7.__str__(self) 定义当被 str() 调用时的行为 27     8.__bytes__(self) 定义当被 bytes() 调用时的行为 28     9.__hash__(self) 定义当被 hash() 调用时的行为 29     10.__bool__(self) 定义当被 bool() 调用时的行为,应该返回的是True或者False 30     11.__format__(self,format_spec) 定义当被 format() 调用时的行为 31  32 b.有关属性 33     *12.__getattr__(self,name) 定义当用户试图获取一个不存在的属性时 34     *13.__getattribute__(self,name) 定义当该类的属性被访问时的行为 35     14.__setattr__(self,name,value) 定义当一个属性被设置时的行为 36     *15.__delattr__(self,name) 定义当一个属性被删除时的行为 37     16.__dir__(self,name) 定义当 dir() 被调用时的行为 38     17.__get__(self,instance,owner) 定义当描述符的值被取得时的行为 39     18.__set__(self,instance,value) 定义当描述符的值被改变时的行为 40     19.__delete__(self,instance) 定义当描述符的值被删除时的行为 41  42 c.比较操作符 43     20.__lt__(self,other) 定义小于号的行为: x
y 调用 x.__gt__(y) 48 25.__ge__(self,other) 定义大于等于号的行为: x>=y 调用 x.__ge__(y) 49 50 d.算法运算符 51 26.__add__(self,other) 定义加法的行为: + 52 27.__sub__(self,other) 定义减法的算法: - 53 28.__mul__(self,other) 定义乘法的行为: * 54 29.__truediv__(self,other) 定义真除法的行为: / 55 30.__floordiv__(self,other) 定义整数除法(地板除)的行为: // 56 31.__mod__(self,other) 定义取模算法的行为: % 57 32.__divmod__(self,other) 定义当被 divmod() 调用时的行为 58 33.__pow__(self,other[,modulo]) 定义当被 power() 调用或**运算时的行为 59 34.__lshift__(self,other) 定义按位左移的行为:<< 60 35.__rshift__(self,other) 定义按位右移的行为:>> 61 36.__add__(self,other) 定义按位与操作的行为:& 62 37.__xor__(self,other) 定义按位异或操作的行为:^ 63 38.__or__(self,other) 定义按位或操作的行为:| 64 65 e.反运算 66 39.__radd__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 67 40.__rsub__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 68 41.__rmul__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 69 42.__rtruediv__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 70 43.__rfloordiv__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 71 44.__rmod__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 72 45.__rdivmod__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 73 46.__rpow__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 74 47.__rlshift__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 75 48.__rrshift__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 76 49.__rxor__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 77 50.__ror__(self,other) 与上方相同,当左操作数不支持相应的操作时被调用 78 79 f.增量赋值运算 80 51.__iadd__(self, other) 定义赋值加法的行为:+= 81 52.__isub__(self, other) 定义赋值减法的行为:-= 82 53.__imul__(self, other) 定义赋值乘法的行为:*= 83 54.__itruediv__(self, other) 定义赋值真除法的行为:/= 84 55.__ifloordiv__(self, other) 定义赋值整数除法的行为://= 85 56.__imod__(self, other) 定义赋值取模算法的行为:%= 86 57.__ipow__(self, other[, modulo]) 定义赋值幂运算的行为:**= 87 58.__ilshift__(self, other) 定义赋值按位左移位的行为:<<= 88 59.__irshift__(self, other) 定义赋值按位右移位的行为:>>= 89 60.__iand__(self, other) 定义赋值按位与操作的行为:&= 90 61.__ixor__(self, other) 定义赋值按位异或操作的行为:^= 91 62.__ior__(self, other) 定义赋值按位或操作的行为:|= 92 93 g。一元操作符 94 63._neg__(self) 定义正号的行为:+x 95 64.__pos__(self) 定义负号的行为:-x 96 65.__abs__(self) 定义当被 abs() 调用时的行为 97 66.__invert__(self) 定义按位求反的行为:~x 98 99 h.类型转换100 67.__complex__(self) 定义当被 complex() 调用时的行为(需要返回恰当的值)101 68.__int__(self) 定义当被 int() 调用时的行为(需要返回恰当的值)102 69.__float__(self) 定义当被 float() 调用时的行为(需要返回恰当的值)103 70.__round__(self[, n]) 定义当被 round() 调用时的行为(需要返回恰当的值)104 71.__index__(self) 1. 当对象是被应用在切片表达式中时,实现整形强制转换105 2. 如果你定义了一个可能在切片时用到的定制的数值型,你应该定义 __index__106 3. 如果 __index__ 被定义,则 __int__ 也需要被定义,且返回相同的值107 108 i.上下文管理(with 语句)109 72.__enter__(self) 1. 定义当使用 with 语句时的初始化行为110 2. __enter__ 的返回值被 with 语句的目标或者 as 后的名字绑定111 73.__exit__(self, exc_type, exc_value, traceback) 112 1. 定义当一个代码块被执行或者终止后上下文管理器应该做什么113 2. 一般被用来处理异常,清除工作或者做一些代码块执行完毕之后的日常工作114 115 j.容器类型116 74.__len__(self) 定义当被 len() 调用时的行为(返回容器中元素的个数)117 75.__getitem__(self, key) 定义获取容器中指定元素的行为,相当于 self[key]118 76.__setitem__(self, key, value) 定义设置容器中指定元素的行为,相当于 self[key] = value119 77.__delitem__(self, key) 定义删除容器中指定元素的行为,相当于 del self[key]120 78.__iter__(self) 定义当迭代容器中的元素的行为121 79.__reversed__(self) 定义当被 reversed() 调用时的行为122 80.__contains__(self, item) 定义当使用成员测试运算符(in 或 not in)时的行为

 

 

        

        

        

        

        

 

转载于:https://www.cnblogs.com/pupilheart/p/9367368.html

你可能感兴趣的文章
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>
859. Buddy Strings - LeetCode
查看>>
[置顶] 关键字弹出动画
查看>>
支付宝api指南
查看>>
二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式
查看>>
docker-compose部署kafka
查看>>
IOS中NSUserDefaults的用法(轻量级本地数据存储)
查看>>
cms项目技术心得!
查看>>
Django模板系统
查看>>
位(Bit)与字节(Byte)
查看>>
关于两次指针(struct型)传参数的问题
查看>>
在Logstash的配置文件中对日志事件进行区分
查看>>
字符串之strcmp
查看>>
Android使用Fragment程序崩溃
查看>>
codevs 2822 爱在心中(强连通分量)
查看>>
七:python 对象类型详解三:列表
查看>>
c语言基本数据类型相关
查看>>
SQL Server DATEADD() 函数
查看>>