一、__init__和__del__
__init__主要是实例初始化, __del__相当于析构器
#/usr/bin/env python #-*- coding:utf-8 -*- class test(object): #实例初始化 def __init__(self): print "call __init__" #析构器 def __del__(self): print "call __del__" t=test()
call __init__ call __del__
init在实例化的时候调用,del在对象销毁时自动调用,一般类中都默认带有__del__不需要自己声明
二、 __new__和__init__
官网解释:
If __new__() returns an instance of
cls
, then the new instance’s __init__()
method will be invoked like __init__(
self
[, ...]), where
self
is
the new instance
and
the remaining arguments are the same as were passed to __new__().
如果__new__()返回cls的实例,则新实例的__init__()方法会像__init__(self[,...])调用,其中self是新实例,其他的参数和传给__new__()中的一样
If __new__() does
not
return
an instance of
cls
, then the new instance’s __init__() method will
not
be invoked.
如果 __new__()不返回实例,则__init__()不会被调用
1、
__new__ 是在__init__之前被调用的特殊方法,不返回实例
class A(object): def __init__(self): print "call __init__" def __new__(self): print "call __new__" a=A()——
call __new__
2、返回实例
class A(object): def __init__(self,x=0): print "call __init__" self.x=x def __new__(cls): print "call __new__" #返回cls的实例 return super(A,cls).__new__(cls) a=A()
call __new__ call __init__
2种方法刚好验证官网的解释,另外
__init__只是用来将传入的参数初始化给对象
,
__new__
很少用到
,除非你希望能够控制对象的创建。
三、__call__
类中定义了__call__ ()方法,表明类可以作为方法被调用
class B(object): #define __call__ def __call__(self,x=0): print "call __call__()" #value that the method returns return x #instance b=B() #invoked as a method b() print b(1)
call __call__() call __call__() 1
可以看出作为方法调用时获得的返回值为__call__()中返回的值。
四、其他的一些基本的定制魔法方法
#/usr/bin/env python #-*- coding:utf-8 -*- #instance class C(object): #内建str()以及print语句 def __str__(self): print "call __str__" return "class C __str__" #内建repr()和操作符 def __repr__(self): print "call __repr__" return "class C __repr__" #内建unicode() def __unicode__(self): print "call __unicode__" return "call C __unicode__" #内建bool() def __nozero__(self): print "call __nozeto__" #内建len() def __len__(self): print "call __len__" return 1 c=C() #首先 c 会调用__str__中的print #print c 会答应__str__方法返回值 print c #repr(c)的时候调用 __repr__方法中的print #print repr(c)会打印__repr__方法的返回值 print repr(c) #unicode(c)的时候调用 __unicode__方法中的print #print unicode(c)会打印__unicode__方法的返回值 print unicode(c) #len(c)的时候调用 __len__方法中的print #print len(c)会打印__len__方法的返回值 print len(c) #bool(c)的时候调用 __len__方法中的print #print bool(c)如果len(c)为0则返回False,非0则为True print bool(c)
结果:
call __str__ class C __str__ call __repr__ class C __repr__ call __unicode__ call C __unicode__ call __len__ 1 call __len__ True
相关推荐
用Python画出一个魔法阵 turtle
python魔法方法和装饰器.xmind
《Python黑魔法指南v3.01》是一本探索Python编程中不常用或不为人知特性的书籍。本文将从书中的几个章节提取关键知识点进行详细介绍。 1.1 **默默无闻的省略号(...)** 在Python中,省略号`...`是一个特殊的标识符...
本资源是一本关于 Python 编程的电子教程,涵盖了 Python 编程的一些冷门知识、魔法知识和开发技巧。本文档共有多章,第一章记录了一些大多数开发者并不知晓的冷知识,内容基本延续 v1.0 。 1. 默默无闻的省略号 在...
他们是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,你可以定义自己想要的行为,而这一切都是自动发生的。 Python 的魔术方法...
Python 黑魔法指南 v3.0(1)
Python魔法方法明细一览表
本文实例讲述了Python魔法方法功能与用法。分享给大家供大家参考,具体如下: 1、什么是魔法方法? 魔法方法就是可以给你的类增加魔力的特殊方法,如果你的对象实现(重载)了这些方法中的某一个,那么这个方法就会...
类型转换魔法其实就是实现了str、int等工厂函数的结果,通常这些函数还有类型转换的功能,下面是一些相关的魔法方法: •__int__(self) •转换成整型,对应int函数。 •__long__(self) •转换成长整型,对应long函数...
Python中的“魔法方法”(Magic Methods)是一组特殊命名的函数,它们以两个下划线开头和结尾(如`__str__`、`__repr__`等),这些方法提供了对语言结构的底层控制,使得我们可以自定义对象的行为,比如如何打印对象、...
《Python 黑魔法指南》是一本专注于Python编程的高级教程,旨在揭示一些鲜为人知的技巧和使用方法,帮助开发者更高效、更深入地掌握Python语言。这份指南以PDF文档的形式提供,名为"Python 黑魔法指南 v1.0.pdf",...
《ヴィッキーサクラの魔法陣(PYTHON)2.0-COPY.zip》是一个包含Python编程示例的压缩文件,特别使用了Python的turtle模块。这个项目可能是一个图形绘制程序,通过Python的turtle库创建出类似“魔法阵”的精美图形。...
ヴィッキーサクラの魔法陣(PYTHON)-COPY.zip Key:"vickysakura" 一个简单的魔法阵,可以在Python2.7.18下使用~
在这个名为"Sorcery-master"的压缩包中,我们可能找到了一系列关于Python黑魔法的实践案例。下面将详细探讨一些可能包含在其中的知识点。 1. **元编程(Metaprogramming)**:Python支持元编程,允许程序员在运行时...
例如,如果要将一个类要实现迭代,就必须实现两个魔法方法:__iter__、next(python3.x中为__new__)。__iter__应该返回一个对象,这个对象必须实现 next 方法,通常返回的是 self 本身。而 next 方法必须在每次调用...
在Python编程中,"魔法方法"(Magic Methods)是一类以双下划线开头和结尾的方法,它们在特定上下文中自动被调用,用于实现语言的一些内置行为。本篇文章将详细探讨运算相关的魔法方法,包括比较运算符和算术运算符...
在Python编程中,魔法方法(Magic Methods)是类中具有特殊功能的方法,它们的名字以两个下划线开头和结尾,例如`__init__`、`__del__`和`__str__`等。这些方法在特定场景下会被Python解释器自动调用,以实现特定的...
在Python编程中,魔法方法(也称为特殊方法)是指以双下划线(__)开头和结尾的方法。这些方法在Python中具有特殊含义,能够被Python解释器识别并赋予特定的功能。在容器类型方面,Python中的容器类型(container ...