博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的__init__ 、__new__、__call__等内置函数的剖析
阅读量:5329 次
发布时间:2019-06-14

本文共 1678 字,大约阅读时间需要 5 分钟。

1.__new__(cls, *args, **kwargs)  

创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身

2.__init__(self, *args, **kwargs)

创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】

3.__call__(self,  *args, **kwargs)

如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符

#__conding:utf-8__class Person:    def __init__(self, name):        self.name = name    def sayHi(self):        print("Hello my name is:%s" %self.name)p = Person("wuyanlong")p.sayHi()class P(object):    def __init__(self, *args, **kwargs):        print "init"        super(P,self).__init__(*args, **kwargs)    def __new__(cls, *args, **kwargs):        print "new", cls        return super(P, cls).__new__(cls ,*args, **kwargs)    def __call__(self, *args, **kwargs):        print "call"pp = P()print "__________"pp()

运行结果:

***:~/Python爬虫/class$ python calss1.py Hello my name is:wuyanlongnew 
init__________call

 

4. __getattr__:

从对象中读取某个属性时,首先需要从self.__dicts__中搜索该属性,再从__getattr__中查找。

class A(object):     def __init__(self):         self.name = 'from __dicts__: zdy'      def __getattr__(self, item):         if item == 'name':             return 'from __getattr__: zdy'         elif item == 'age':             return 26  a = A() print a.name # 从__dict__里获得的 print a.age # 从__getattr__获得的

 

5. __setattr__

class A(object):    def __setattr__(self, *args, **kwargs):         print 'call func set attr'         return object.__setattr__(self, *args, **kwargs)

 

 

6. __delattr__

函数式用来删除对象的属性:

class A(object):    def __delattr__(self, *args, **kwargs):         print 'call func del attr'         return object.__delattr__(self, *args, **kwargs)

 

转载于:https://www.cnblogs.com/blogofwyl/p/4611106.html

你可能感兴趣的文章
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
[工具] Sublime Text 使用指南
查看>>
Hangfire在ASP.NET CORE中的简单实现方法
查看>>
Algorithm——何为算法?
查看>>
Web服务器的原理
查看>>
小强升职计读书笔记
查看>>
常用的107条Javascript
查看>>
#10015 灯泡(无向图连通性+二分)
查看>>
elasticsearch 集群
查看>>
忘记root密码,怎么办
查看>>