博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类的特殊方法"__new__"详解
阅读量:4630 次
发布时间:2019-06-09

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

上代码!

class A:	def __new__(cls, *args, **kwargs):		obj = super().__new__(cls)		print("__new__     ", obj)      # <__main__.A object at 0x00000000021D76A0>		return obj	def __init__(self, name, age):		print("__init__     ", self)     # <__main__.A object at 0x00000000021D76A0>		self.name = name		self.age = agea = A('sath', 22)print(a)        # <__main__.A object at 0x00000000021D76A0>

  

# 可以看出三次打印都是同一个内存地址
# 执行的顺序为: __new__ >>>>> __init__ >>>>> a
 

  

# 一个完整的实例化对象过程:
# 1. 当执行到类名加括号时, 首先执行"__new__"开辟一块内存空间, 并且携带了你要给对象封装的属性# 2. 将开辟的空间和要封装的对象属性return给"__init__"# 3. "__init__" 初始化这一块对象的内存空间, 将属性封装进这个内存空间中# 4. 对象空间初始化完成后, 将这个空间返回给调用者, 得到一个类型为"A"的对象"a"
 

  

 
 

转载于:https://www.cnblogs.com/594504110python/p/9398222.html

你可能感兴趣的文章
记一次生产的bug
查看>>
5. Longest Palindromic Substring
查看>>
精通Groovy
查看>>
ubuntu14.04上搭建android开发环境
查看>>
IOS - 设置与帮助界面
查看>>
搭建nexus后,进入首页的时候出现warning: Could not connect to Nexus.错误
查看>>
Multithread 之 introduction
查看>>
zabbix 监控tomcat实例
查看>>
WinForm 实现验证码
查看>>
[C++]C++中的IO类
查看>>
笔记本电脑(Windows7)实现无线AP
查看>>
JqGridView 1.0.0.0发布
查看>>
欲精一行,必先通十行
查看>>
前端相关html和css
查看>>
celery
查看>>
实现音乐播放器
查看>>
BZOJ1002 [FJOI2007]轮状病毒(最小生成树计数)
查看>>
uv_timer_t的释放问题
查看>>
【bzoj1853】[Scoi2010]幸运数字 容斥原理+搜索
查看>>
【bzoj2770】YY的Treap 权值线段树
查看>>