python的magic methods】的更多相关文章

Book Source:[https://rszalski.github.io/magicmethods/] magic methods: 名称前后有双下划线的方法 构造函数和初始化 初始化类实例时,__new__ 方法比__init__方法首先被调用 __del__:当被作为垃圾回收时调用的方法,可以用来做一些额外的清理工作.最好不要使用它来清理占用的资源(端口,文件流,链接),保持良好的代码习惯 自定义类操作函数的使用 两个对象的比较通常是比较这两个对象的引用 __eq__: 可用于 ==…
介绍 本指南是数月博客的总结.主题是魔术方法. 什么是魔术方法呢?它们是面向对象Python语言中的一切.它们是你可以自定义并添加“魔法”到类中的特殊方法.它们被双下划线环绕(比如__init__或__lt__).它们的文档也不像它所需要的那么齐备.Python的所有魔术方法都在Python文档的同一区域,但它们的使用分散,组织松散.而且文档的这部分区域中几乎没有一个示例(这很有可能是设计好的,因为在语法参考里它们都很详尽,但伴随的是枯燥的语法描述等等). 因此,为了解决Python文档中我认为…
https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-methods.html (由于markdown语法问题,下面的所有的方法名字前后的--都被识别为加粗语法) 魔术方法 调用方式 解释 new(cls [,...]) instance = MyClass(arg1, arg2) new 在创建实例的时候被调用 init(self [,...]) instance = M…
Pthon魔术方法(Magic Methods)-描述器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.描述器概述 1>.描述器定义 Python中,一个类实现了"__get__","__set__","__delete__"三个方法中的任何一个方法,就是描述器. 实现着三个中的某些方法,就支持了描述器协议: 仅实现了"__get__",就是非数据描述器,即non-data descriptor…
Pthon魔术方法(Magic Methods)-反射 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.反射概述 运行时,区别于编译时,指的时程序被加载到内存中执行的时候. 反射,reflection,指的时运行时获取类型定义信息. 一个对象能够再运行时,像照镜子一样,反射出其类型信息. 简单的说,再python这种,能够通过一个对象,找出其type,class,attribute或method的能力,称为反射或者自省. 具有反射能力的函数有type(),isinstanc…
Pthon魔术方法(Magic Methods)-上下文管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上下文管理方法 __enter__: 进入与此对象相关的上下文.如果存在该方法,with语法会把该方法的返回值作为绑定到as子句中指定的变量上. __exit__: 退出此对象相关的上下文. 二.案例展示 1>.上下文管理对象 #!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog…
Pthon魔术方法(Magic Methods)-可调用对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.可调用对象方法 __call__: 类中定义一个该方法,实例就可以像函数一样调用. 二.案例展示 #!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie class Point: def __init__(sel…
Pthon魔术方法(Magic Methods)-容器相关方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.容器相关方法汇总 __len__: 内建函数len(),返回对象的长度(>=0的整数),如果把对象当作容器类型看,就如同list或者dict. bool()函数调用的时候,如果没有__bool__()方法,则会看__len__()方法是否存在,存在返回非0为真. __iter__: 迭代容器时,调用,返回一个新的迭代器对象. __contains__: in成员运…
Pthon魔术方法(Magic Methods)-运算符重载 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Python运算符对应的魔术方法 1>.比较运算符 <: 对应__lt__ <=: 对应__le__ ==: 对应__eq__ >: 对应__gt__ >=: 对应__ge__ !=: 对应__ne__ 2>.算数运算符 +: 对应__add__ -: 对应__sub__ *: 对应__mul__ /: 对应__truediv__ %: 对…
Pthon魔术方法(Magic Methods)-bool 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.bool方法 __bool__: 内建函数bool(),或者对象放在逻辑表达式的位置,调用这个函数返回布尔值. 没有定义"__bool__()",就找"__len__()"返回长度,非0为真. 如果"__len__()"也没有定义,那么所有实例都返回真. __len__: 内建函数len(),调用这个函数返回当前数据类…
Pthon魔术方法(Magic Methods)-hash 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.hash方法 __hash__: 内建函数hash()调用的返回值,返回一个整数.如果定义这个方法该类的实例就可hash. __eq__: 对应"=="操作符,判断两个对象内容是否相等,返回bool值. 定义了这个方法,如果不提供"__hash__"方法,那么实例将不可hash了. "__hash__"方法只是返回一个…
Pthon魔术方法(Magic Methods)-可视化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于可视化的魔术方法简介 __str__: str()函数,format()函数,print()函数调用,需要返回对象的字符串表达式,即会默认调用该魔术方法. 如果没有定义该方法,就去调用"__repr__"方法返回字符串表达式,如果"__repr__"没有定义,就直接返回对象的内存地址信息. __repr__: 内建函数repr()对一个…
Pthon魔术方法(Magic Methods)-实例化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.实例化一个对象 __new__: 该方法需要返回一个值,如果该值不是cls的实例,则不会调用"__init__".该方法永远都是静态方法. 二.案例展示 #!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengji…
源:DataCamp datacamp 的 DAILY PRACTICE  + 日常收集. Methods String Methods List Methods 缺一 Methods You can think of methods as functions that "belong to" Python objects. String Methods # string to experiment with: room room = "poolhouse" # U…
描述符 : 将某种特殊类型的类的实例指派给另一个类的属性. 特殊类型为以下方法的1-3个 : __get__(self, instance, owner):用于访问属性,它返回属性的值 __set__(self, instance, value):将在属性分配操作中调用,不返回任何内容 __delete__(self, instance):控制删除操作,不返回任何内容 An example : design a property 123456789101112131415161718192021…
For example you want to know what methods are available in Python for String, you can do : dir("xxx") Output: >>> dir("string") ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format_…
魔法函数 python中以双下划线开始和结束的函数(不可自己定义)为魔法函数 调用类实例化的对象的方法时自动调用魔法函数(感觉不需要显示调用的函数都叫) 在自己定义的类中,可以实现之前的内置函数,比如下面比较元素sorted时用It函数(lt(self, other):判断self对象是否小于other对象:) class MyVector(object): def __init__(self, x, y): self.x = x self.y = y def __add__(self, oth…
在以前的文章中,我聊过了Python的 __getitem__ 和 __setitem__ 方法.这些方法被称为“魔法”方法.特殊方法或者dunger方法(译者:国内书籍用“魔法”一词较多).那么,什么是魔法方法呢?这正是今天我们要说的内容. P.S.你会再一次的深深的爱上Python语言. 也将是一篇较长的文章,来让我们开始. 魔法方法究竟是什么? 魔法方法是一种具有特殊魅力的正常方法.Python通过这些魔法方法可以赋予你的class魔力.这些魔法方法都是以双下划线(__)作为前缀和后缀.坦…
PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用. 魔术方法包括: __construct(),类的构造函数 __destruct(),类的析构函数 __call(),在对象中调用一个不可访问方法时调用 __callStatic(),用静态方式中调用一个不可访问方法时调用 __get(),获得一个类的成员变量时调用 __set(),设置一个类的成员变量时调用 __isset(),当对不可访问属性调用isset()或empty()时调用 __unset(),…
<?php class Car{ protected $_color; protected $_model; public function __call($name,$arguments){ $first=isset($arguments[0]) ? $arguments[0] : null; switch ($name) { case 'getColor': return $this->_color; case 'setColor': $this->_color=$first; re…
http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的一切.它们是你可以自定义并添加"魔法"到类中的特殊方法.它们被双下划线环绕(比如__init__或__lt__). 在Python中,我们可以通过"魔术方法"使自定义的class变得强大.易用.例如当我们想定义一个可迭代的类对象的时候,就可以去实现"__iter__(self)"这个魔术方法: 构造…
这里只分析几个可能会常用到的魔法方法,像__new__这种不常用的,用来做元类初始化的或者是__init__这种初始化使用的 每个人都会用的就不介绍了. 其实每个魔法方法都是在对内建方法的重写,和做像装饰器一样的行为.理解这个道理 再尝试去理解每个细节装饰器会比较方便. 关于__str__和__repr__: 直接上例子: class Test(object): def __init__(self, world): self.world = world def __str__(self): re…
原文:https://blog.csdn.net/pipisorry/article/details/50708812 版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主允许不得转载. https://blog.csdn.net/pipisorry/article/details/50708812http://blog.csdn.net/pipisorry/article/details/50708812 魔术方法是面向对象Python语言中的…
转载:https://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing articles [1] give a comprehensive explanation of how metaclasses work in Python so I'm making my own. Metaclasses are a controversial topic [2] in Python, ma…
add by zhj:先收藏了,有时间看,图倒是不少,可以配合stackover flow上那篇文章一起看 原文:http://blog.ionelmc.ro/2015/02/09/understanding-python-metaclasses/ None of the existing articles [1] give a comprehensive explanation of how metaclasses work in Python so I'm making my own. Me…
A few things to remember while coding in Python. - 17 May 2012 - UPDATE: There has been much discussion in Hacker News about this article. A few corrections from it. Zen of Python Learning the culture that surrounds a language brings you one step clo…
Github上的1000多本免费电子书重磅来袭!   以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能知道这个免费电子书库的含金量了吧.记得一定要看几本,千万别下载了大量书籍而束之高阁! 行动重于空想! Github地址:     https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md I…
Underscores in Python https://shahriar.svbtle.com/underscores-in-python Underscores in Python This post discusses the use of the _ character in Python. Like with many things in Python, we’ll see that different usages of _ are mostly (not always!) a m…
Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools Awk Bash Basic BETA C C# C++ Chapel Cilk Clojure COBOL CoffeeScript ColdFusion Cool Coq D Dart DB2 Delphi / Pascal DTrace Elasticsearch Emacs Erlang F#…
在ipython或者jupyter notebook中,会出现"%"开头并且一个很短的命令,例如交互式的matlablib绘图: %matplotlib inline 之前一直不知道这类东西怎么称呼.这类叫做python builtin magic commands,官方文档:https://ipython.readthedocs.io/en/stable/interactive/magics.html 一个比较方便的用法:在命令行终端使用ipython,交互式的执行后保存这次交互式编…