【Python中四个魔术方法的详细介绍】教程文章相关的互联网学习教程文章

Python中的魔术方法【代码】

魔术方法就是一个类/对象中的方法,和普通方法唯一的不同时,普通方法需要调用!而魔术方法是在特定时刻自动触发。这里列举出几个常用的魔术方法:1.__init__初始化魔术方法 触发时机:初始化对象时触发(不是实例化触发,但是和实例化在一个操作中) 参数:至少有一个self,接收对象 返回值:无 作用:初始化对象的成员 注意:使用该方式初始化的成员都是直接写入对象当中,类中无法具有2.__new__实例化魔术方法 触发时机: 在实例...

032.Python魔术方法__new__和单态模式【代码】【图】

一 __new__ 魔术方法1.1 介绍触发时机:实例化类生成对象的时候触发(触发时机在__init__之前)功能:控制对象的创建过程参数:至少一个cls接受当前的类,其他根据情况决定返回值:通常返回对象或None对象.属性 对象.方法()类.属性 类.方法()1.2 基本用法class MyClass():abc = 123def__new__(cls): #把class这个类传递__new__这个方法print (123)return None #返回一个None#实例化对象 obj = MyClass() print (obj)执行这样就...

飘逸的python - 什么是魔术方法(magic method)

我们经常看到各种被双下划线环绕的方法,如__init__,它们就是魔术方法.魔术方法是python语言预定好的"协议",不同魔术方法在不同场景下,会被隐式调用.我们通过重载这些方法,从而操控各种行为.class A(object):def __str__(self):return "I am A,2333"def __len__(self):return 42 a = A() print a#输出 "I am A,2333" print len(a)#输出42 可以看到,print语句会隐式调用__str__方法,len()会隐式调用__len__方法. python预定了丰富的魔...

python魔术方法(二)【图】

上下文管理:文件IO操作可以对文件对象使用上下文管理,使用with...as语法with open(‘test‘) as f: pass当一个对象同时实现了__enter__()和__exit__()方法,就属于上下文管理的对象__enter__:进入与此对象相关的上下文,如果存在该方法,with语法会把该方法的返回值绑定到as子句中指定的变量上,换句话说就是__enter__方法的返回值就是上下文使用的对象,with语法会把这个返回值赋给as子句的变量上__exit__:退出与此对象相关的上...

Python中的__new__与__init__魔术方法理解笔记

很喜欢Python这门语言。在看过语法后学习了Django 这个 Web 开发框架。算是对 Python 有些熟悉了。不过对里面很多东西还是不知道,因为用的少。今天学习了两个魔术方法:__new__ 和 __init__。开攻:如果对 Python 有所简单了解的话应该知道它包含类这个概念的。语法如下:复制代码 代码如下: class ClassName: <statement - 1>: . . . <statement - N>问题来了。像我们学习的 C# 或是 Java 这...

深入了解Python中的魔术方法

前言在Python中,所有以”__”双下划线包起来的方法,都统称为”魔术方法”。比如我们接触最多的__init__.有些魔术方法,我们可能以后一辈子都不会再遇到了,这里也就只是简单介绍下;而有些魔术方法,巧妙使用它可以构造出非常优美的代码,比如将复杂的逻辑封装成简单的API。本文编辑的思路借鉴自Rafe Kettler的这篇博客: A Guide to Python Magic Methods,并补充了一些代码示例。介绍的顺序大概是:常见的先介绍,越少见的越靠后讲。...

Python魔术方法-MagicMethod

绍  在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,但是对于官方的描述比较混乱而且组织比较松散。很难找到有一个例子。构造和初始化  每个Pythoner都知道一个最基本的魔术方法, __init__ 。通过此方法我们可以定义一个对象的初始操作。然而,当调用 x = SomeClass() 的时候, __init__ 并不是第一个被调用的方法。...

python魔术方法详解

准备工作为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始。class NewType(Object):mor_code_here class OldType:mor_code_here 在这个两个类中NewType是新类,OldType是属于旧类,如果前面加上 _metaclass_=type ,那么两个类都属于新类。 构造方法构造方法与其的方法不一样,当一个对象被创建会立即调用构造方法。创建一个python的构造方法很简答,只要把init方法,从简单的init方法,转换成魔法版本的_init...

详解Python中的魔术方法

介绍  在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,但是对于官方的描述比较混乱而且组织比较松散。很难找到有一个例子。构造和初始化  每个Pythoner都知道一个最基本的魔术方法, __init__ 。通过此方法我们可以定义一个对象的初始操作。然而,当调用 x = SomeClass() 的时候, __init__ 并不...

介绍Python中的魔术方法的使用

介绍  在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ ,Python中所有的魔术方法均在官方文档中有相应描述,但是对于官方的描述比较混乱而且组织比较松散。很难找到有一个例子。构造和初始化  每个Pythoner都知道一个最基本的魔术方法, __init__ 。通过此方法我们可以定义一个对象的初始操作。然而,当调用 x = SomeClass() 的时候, __init__ 并不...

Python魔术方法MagicMethod的详细介绍

介绍  在Python中,所有以“”双下划线包起来的方法,都统称为“Magic Method”,例如类的初始化方法 init ,Python中所有的魔术方法均在官方文档中有相应描述,但是对于官方的描述比较混乱而且组织比较松散。很难找到有一个例子。构造和初始化  每个Pythoner都知道一个最基本的魔术方法, init 。通过此方法我们可以定义一个对象的初始操作。然而,当调用 x = SomeClass() 的时候, init 并不是第一个被调用的方法。实际上,还有...

Python中四个魔术方法的详细介绍

Python的魔术方法一般以methodname的形式命名,如:init(构造方法), getitem、 setitem(subscriptable所需method), delitem(del obj[key]所需method), len(len(…)所需method)等。在Python中,如果我们想实现创建类似于序列和映射的类,可以通过重写魔法方法getitem、setitem、delitem、len方法去模拟。魔术方法的作用:getitem(self,key):返回键对应的值。setitem(self,key,value):设置给定键的值delitem(self,key):删除...

python学习笔记-魔术方法,让自定义类更像内置类型

Python的魔术方法是Python中那些预定义的像__XXX__类型的函数。使用Python的魔术方法的最大优势在于python提供了简单的方法让对象可以表现得像内置类型一样。__str__函数__str__函数用于处理打印实例本身的时候的输出内容。如果没有覆写该函数,则默认输出一个对象名称和内存地址。例如:>>> class Student(object): ... def __init__(self,name): ... self._name = name ... >>> print Student()输出:<__main__....

python魔术方法:让自定义类更像内置类型

Python的魔术方法是Python中那些预定义的像__XXX__类型的函数。使用Python的魔术方法的最大优势在于python提供了简单的方法让对象可以表现得像内置类型一样。__str__函数__str__函数用于处理打印实例本身的时候的输出内容。如果没有覆写该函数,则默认输出一个对象名称和内存地址。例如:>>> class Student(object): ... def __init__(self,name): ... self._name = name ... >>> print Student()输出:<__main__....

Python中的__new__与__init__魔术方法理解笔记

很喜欢Python这门语言。在看过语法后学习了Django 这个 Web 开发框架。算是对 Python 有些熟悉了。不过对里面很多东西还是不知道,因为用的少。今天学习了两个魔术方法:__new__ 和 __init__。 开攻: 如果对 Python 有所简单了解的话应该知道它包含类这个概念的。语法如下:代码如下: class ClassName::.. .问题来了。像我们学习的 C# 或是 Java 这些语言中,声明类时,都是有构造函数的。类似下面这样子:代码如下: public cla...