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相关推荐

  1. Python 的 Magic Methods 指南(转)

    介绍 本指南是数月博客的总结.主题是魔术方法. 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法"到类中的特殊方法.它们被双下划线环绕(比如 ...

  2. Python 的 Magic Methods 指南

    摘要: 介绍 本指南是数月博客的总结.主题是魔术方法. 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法"到类中的特殊方法.它们被双下划线环 ...

  3. Python 魔法方法(pythonzho 的 Magic Methods 指南)

    介绍 本指南是数月博客的总结.主题是魔术方法. 英文原文:A Guide to Python's Magic Methods 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定 ...

  4. 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/ ...

  5. PEP 8 -- Style Guide for Python Code。Python 代码规范。

    PEP 8 – Style Guide for Python Code 文章目录 PEP 8 -- Style Guide for Python Code 代码规范. PEP8 (pycodestyl ...

  6. 在翻译PEP8中学习 -- Style Guide for Python Code

    翻译了好久, 终于把这篇文档翻完了, 学到很多. 自从考研结束后就没有翻译过文章了, 一开始还以为考研英语78分的我翻译能力还可以, 结果打脸. 凡是得练习啊! 官方原文: PEP8 Style Gu ...

  7. PEP8-python代码样式指南(Style Guide for Python Code)

    文章目录 介绍(Introduction) 尽信书不如无书(A Foolish Consistency is the Hobgoblin of Little Minds) 代码布局(Code Lay- ...

  8. Python gmpy2 mpz Methods

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python gmpy2 mpz Methods mpz方法 ...

  9. 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 ...

最新文章

  1. 使用iText在word文档中插入复杂的Table表格
  2. Codeforces Round #643 (Div. 2)B到C题解
  3. 怎么点亮段码屏_手机被人偷了,支付宝里的钱被转走了,遇到这种情况该怎么办?...
  4. package.json字段全解
  5. 若所有的参数皆需要类型转换——请为此采用non-member函数
  6. 【项目调研+论文阅读】基于医学文献的实体抽取(NER)方法研究 day5
  7. find linux 目录深度_把 Linux 上的文件列表和排序玩出花来
  8. 读书笔记_Effective_C++_条款二:尽量以const, enum, inline替换#define
  9. ai/ml_本月有关AI / ML的令人印象深刻的中等文章
  10. java实现同步的几种方式(总结)
  11. 菜鸟驿站人工投诉电话是多少(手把手教你投诉快递员)
  12. 初中数学抽象教学的案例_初中数学教学案例与反思
  13. spring深入学习(十九) IOC 之 Factory 实例化 bean
  14. 博雅互动(静态网页)分享
  15. 元素节点,属性节点,文本节点,文档节点,分别的意思
  16. php 保留2位小数 不四舍五入
  17. Tableau豆瓣电影项目实战作业 Day4
  18. matlab火控雷达,基于MATLAB的GUI设计伺服系统仿真软件
  19. [license]MIT,BSD,Apache几种开源协议之间的区别
  20. java8Stream流的使用2--终止操作(分组,分区)

热门文章

  1. python冒泡排序算法时间复杂度为nlogn_Python版算法专题-1、冒泡排序
  2. python自学步骤-怎么自学python,大概要多久?
  3. 开课吧python好吗-Python是个什么鬼?求职为何这么难
  4. python绘制3维图-1、2、3维图见过,用Python画出来的六维图见过么?
  5. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程
  6. python数据结构推荐书-关于数据结构,有哪些不错的参考书推荐?
  7. python大神-python大神教你在最短时间内学会爬取大规模数据
  8. python自动测试p-python自动化测试_6
  9. python好学吗一般要学多久-转行学Python开发难吗,月薪过万需要多久
  10. python自带的shell是什么-python shell是什么东西?