python __new__和__init__的区别
来源:互联网 发布:电信会屏蔽哪些端口 编辑:程序博客网 时间:2024/06/05 16:58
__new__和__init__的区别
__new__是Python面向对象语言中一个很少用的函数,更多使用的是init这个函数。例如:
class Book(object): def __init__(self, title): super(Book, self).__init__(self) self.title = title# Define a bookb = Book('The Django Book')print(b.title)
上面算是OOP语言的入门代码了,粗略一看__init__和java中的构造函数一样,其实不然,实际上它根本不能算的上构造函数。__new__才是创建实例的方法。
根据官方文档:
__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
也就是,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
class Book(object): def __new__(cls, title): print '__new__' return super(Book, cls).__new__(cls) def __init__(self, title): print '__init__' super(Book, self).__init__(self) self.title = titleb = Book('The Django Book')print(b.title)
上面执行的结果:
__new____init__The Django Book
阅读全文
1 0
- python __init__和__new__之间的区别
- python __init__和__new__之间的区别
- python中__new__和__init__的区别
- python __init__和__new__之间的区别
- Python中的__new__和__init__的区别
- python __new__和__init__的区别
- 【python】__new__和__init__的区别
- __new__和__init__的区别
- __new__和__init__的区别
- Python中__init__和__new__的区别详解
- python中__init__()方法和__new__()方法的区别
- python __new__ 和 __init__
- python __new__和__init__
- python之__init__()和__new__()的区分
- Python---类的"__new__"和"__init__"方法
- Python __init__与__new__区别
- Python中__new__() 和 __init__()
- python 中的 __new__ 和 __init__
- Oracle锁表查询及解锁kill进程简介
- 线段树模板
- PAT乙级1026. 程序运行时间(15)
- POJ1226
- Git log命令查看所有的历史版本
- python __new__和__init__的区别
- ubuntu16.04安装Anaconda
- 大数据量下高并发同步的讲解
- 关于ssm框架搭建注意事项
- BZOJ1012_Maxnumber_KEY
- LeetCode
- python 连接vs调试
- IM即时通讯项目讲解(一)--实现类似qq微信表情面板无缝切换
- 微信小程序开发必备 hellow word