A Guide to Python's Magic Methods
Book Source:[https://rszalski.github.io/magicmethods/]
magic methods: 名称前后有双下划线的方法
构造函数和初始化
初始化类实例时,__new__ 方法比__init__方法首先被调用
__del__:当被作为垃圾回收时调用的方法,可以用来做一些额外的清理工作。最好不要使用它来清理占用的资源(端口,文件流,链接),保持良好的代码习惯
自定义类操作函数的使用
两个对象的比较通常是比较这两个对象的引用
__eq__: 可用于 == 比较
__ne__:可用于 != 比较
__lt__:可用于 < 比较
__gt__:可用于 > 比较
__le__:可用于 《= 比较
__ge__:可用于 >= 比较
__cmp__: self < other 返回负数, self == other 返回0,self > other 返回正数,可用于以上所有比较
优先使用__gt__(), __lt__(), __eq__(),如果找不到则使用__cmp__()
string 类型默认是按照字母表前后顺序比较大小的
也可用装饰器@total_ordering 2.7+/3.4+
数字类型的magic method:
一元运算操作符和方法:
__pos___: +some_object
__neg__: -some_object
_abs__: abs(some_object)
__invert__:~some_object(取反操作符)
__round__:round(some_object)
__floor__:math.floor(向下取整)
__ceil__:math.ceil(向上取整)
__trunc__:math.trunc(Truncates x to the nearest Integral toward 0.)
正规算术运算符(some_object + other)
__add__:加法
__sub__:减法
__mul__:乘法
__floordiv__:整数除法
__div__:除法
__truediv__:true division
__mod__:取余%
__divmod__:长除法
__pow__:平方 **
__lshift__:<<
__rshift__:>>
__and__:&
__or__:|
__xor__: ^
反向运算符:(other + some_object)
__radd__/ __rsub__ / __rmul__ /__rfloordiv__ /__rdiv__ /__rtruediv__ /__rmod__ /__rdivmod__ /__rpow__ /__rlshift__ /__rrshift__ /__rand__ /__ror__ /__rxor__
Augmented assignment ( a += b => a = a+b => __iadd__ means += )
__iadd__/ __isub__ / __imul__ /__ifloordiv__ /__idiv__ /__itruediv__ /__imod__ /__idivmod__ /__ipow__ /__ilshift__ /__irshift__ /__iand__ /__ior__ /__ixor__
Type conversion magic methods
___int__ /__long__ /__float__ /__complex__ /__oct__ /__hex__ /__index__ /__trunc__ /__coerce__
Representing your Classes
__str__:str()
__repr__:repr()
__unicode__:unicode()
__format__:格式化
__hash__:hash()
__nonzero__:bool()
__dir__:dir()
__sizeof__:sys.getsizeof()
Controlling Attribute Access
__len__: return length
__getitem__: self[key]
__setitem__:self[key]=value
__delitem__:del self[key]
__iter__:return iterator => for item in object:
__reversed__:reversed() [class should be ordered]
__contains__: 用于 in 和 not in 操作
__missing__:self[key] key不存在时被调用 self.__missing__(key)
Reflection
__instancecheck__:isinstance(instance,class)
__subclasscheck__:issubclass(subclass,class)
Callable Objects
__call__: 可以让类实例当做方法来用 objectA = Class() => objectA(args)
Context Managers
主要用于 with 关键字
__enter__(self): with 块 开始要做的事情,并将返回值赋值给目标 或者 as 后面的变量
__exit__(self,exception_type,exception_value,traceback):with 块结束时要做的事情,正常情况下要返回 True
Abstracet Base Classes
See http://docs.python.org/2/library/abc.html
Building Descriptor Objects
reference : http://python.jobbole.com/83562/
__set__ /__get__ /__delete__
Copying
__copy__: copy.copy()
__deepcopy__:copy.deepcopy()
Pickling Your Objects
这是有关数据存储序列化的东西
__getinitargs__
__getnewargs__
__getstate__
__setstate__
__reduce__
__reduce_ex__
转载于:https://www.cnblogs.com/ArvinZhao/p/9635687.html
A Guide to Python's Magic Methods相关推荐
- Python 的 Magic Methods 指南(转)
介绍 本指南是数月博客的总结.主题是魔术方法. 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法"到类中的特殊方法.它们被双下划线环绕(比如 ...
- Python 的 Magic Methods 指南
摘要: 介绍 本指南是数月博客的总结.主题是魔术方法. 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法"到类中的特殊方法.它们被双下划线环 ...
- Python 魔法方法(pythonzho 的 Magic Methods 指南)
介绍 本指南是数月博客的总结.主题是魔术方法. 英文原文:A Guide to Python's Magic Methods 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定 ...
- PEP 8 – Style Guide for Python Code
PEP 8 – Style Guide for Python Code PEP 8–Python编码规范 原文地址:https://www.python.org/dev/peps/pep-0008/ ...
- PEP 8 -- Style Guide for Python Code。Python 代码规范。
PEP 8 – Style Guide for Python Code 文章目录 PEP 8 -- Style Guide for Python Code 代码规范. PEP8 (pycodestyl ...
- 在翻译PEP8中学习 -- Style Guide for Python Code
翻译了好久, 终于把这篇文档翻完了, 学到很多. 自从考研结束后就没有翻译过文章了, 一开始还以为考研英语78分的我翻译能力还可以, 结果打脸. 凡是得练习啊! 官方原文: PEP8 Style Gu ...
- PEP8-python代码样式指南(Style Guide for Python Code)
文章目录 介绍(Introduction) 尽信书不如无书(A Foolish Consistency is the Hobgoblin of Little Minds) 代码布局(Code Lay- ...
- Python gmpy2 mpz Methods
写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python gmpy2 mpz Methods mpz方法 ...
- The Hitchhiker’s Guide to Python! — The Hitchhiker's Guide to Python
The Hitchhiker's Guide to Python! - The Hitchhiker's Guide to Python The Hitchhiker's Guide to Pytho ...
最新文章
- 使用iText在word文档中插入复杂的Table表格
- Codeforces Round #643 (Div. 2)B到C题解
- 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
- package.json字段全解
- 若所有的参数皆需要类型转换——请为此采用non-member函数
- 【项目调研+论文阅读】基于医学文献的实体抽取(NER)方法研究 day5
- find linux 目录深度_把 Linux 上的文件列表和排序玩出花来
- 读书笔记_Effective_C++_条款二:尽量以const, enum, inline替换#define
- ai/ml_本月有关AI / ML的令人印象深刻的中等文章
- java实现同步的几种方式(总结)
- 菜鸟驿站人工投诉电话是多少(手把手教你投诉快递员)
- 初中数学抽象教学的案例_初中数学教学案例与反思
- spring深入学习(十九) IOC 之 Factory 实例化 bean
- 博雅互动(静态网页)分享
- 元素节点,属性节点,文本节点,文档节点,分别的意思
- php 保留2位小数 不四舍五入
- Tableau豆瓣电影项目实战作业 Day4
- matlab火控雷达,基于MATLAB的GUI设计伺服系统仿真软件
- [license]MIT,BSD,Apache几种开源协议之间的区别
- java8Stream流的使用2--终止操作(分组,分区)
热门文章
- python冒泡排序算法时间复杂度为nlogn_Python版算法专题-1、冒泡排序
- python自学步骤-怎么自学python,大概要多久?
- 开课吧python好吗-Python是个什么鬼?求职为何这么难
- python绘制3维图-1、2、3维图见过,用Python画出来的六维图见过么?
- python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
- python数据结构推荐书-关于数据结构,有哪些不错的参考书推荐?
- python大神-python大神教你在最短时间内学会爬取大规模数据
- python自动测试p-python自动化测试_6
- python好学吗一般要学多久-转行学Python开发难吗,月薪过万需要多久
- python自带的shell是什么-python shell是什么东西?