python中的__init__ 、__new__、__call__等内置函数的剖析
2015-06-30 17:21
651 查看
1.__new__(cls, *args, **kwargs)
创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是cls即class本身
2.__init__(self, *args, **kwargs)
创建完对象后调用,对当前对象的实例的一些初始化,无返回值,即在调用__new__之后,根据返回的实例初始化;注意,这里的第一个参数是self即对象本身【注意和new的区别】
3.__call__(self, *args, **kwargs)
如果类实现了这个方法,相当于把这个类型的对象当作函数来使用,相当于 重载了括号运算符
运行结果:
4. __getattr__:
从对象中读取某个属性时,首先需要从self.__dicts__中搜索该属性,再从__getattr__中查找。
5. __setattr__
6. __delattr__
函数式用来删除对象的属性:
创建对象时调用,返回当前对象的一个实例;注意:这里的第一个参数是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:wuyanlong new <class '__main__.P'> 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)
相关文章推荐
- python过滤字符串中不属于指定集合中字符的类实例
- Python Django 开发 4 ORM
- Python学习笔记2_基础知识
- Python学习笔记1_安装使用
- python获得文件创建时间和修改时间的方法
- python 单下划线/双下划线使用总结
- python中property干什么用的?
- 北京地铁月度消费总金额计算(Python版)
- python 3 过滤股票
- python读写ini配置文件方法实例分析
- Python输出中文乱码问题
- Scrapy使用过程中的中文乱码问题
- Python subprocess模块学习总结
- PYTHON无法使用Image模块
- Python OpenCV 图像相识度对比
- Python Unittest 自动化单元测试框架Demo
- Python Unittest 自动化单元测试框架Demo
- Python读写Excel 2007文件(xlsx)
- python之SocketServer传文件实例
- Python学习基础四