鱼C论坛

 找回密码
 立即注册
查看: 2909|回复: 5

__new__()

[复制链接]
发表于 2021-4-23 12:42:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么f.close()被调用了
print为啥
没有被调用
R7L85RVHJGQ{S)B8FALMZAJ.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-23 12:57:29 | 显示全部楼层
你new的时候返回一个文件对象,del删除的是一个class,他们不是同一个。在new的时候返回自身对象:return super().__new__(cls)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-4-23 13:06:12 | 显示全部楼层
Stubborn 发表于 2021-4-23 12:57
你new的时候返回一个文件对象,del删除的是一个class,他们不是同一个。在new的时候返回自身对象:return s ...

如果继承了多个类
return super().__new__(cls) 这句话返回的是谁的实例
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-23 13:09:02 | 显示全部楼层
本帖最后由 阿奇_o 于 2021-4-23 13:25 编辑

因为你要调用 对象的__del__() 才会去执行。
del var 会 在“命名空间”中 删除该变量/对象,是“手动销毁”了该变量/对象。
另外 del 好像在某种情况下会调用__del__我不记得怎么用了。。你可以自己去查查文档。
In [1]: class FO():
   ...:     def __del__(self):
   ...:         print('我被删除了?')
   ...: 

In [2]: f=FO()

In [3]: f  
Out[3]: <__main__.FO at 0x1d1d9114788>


In [5]: f.__del__()
我被删除了?

In [6]: f        # 文档里说:__del__ method is not guaranteed ... 不能保证在解释器运行期间真的去“删除”该对象。即 它还是可能存在的。要看不同对象的类型及其垃圾回收机制。
Out[6]: <__main__.FO at 0x1d1d9114788>

In [7]: del f  # “手动消耗”该对象

In [8]: f
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-8-a9fcd54b25e7> in <module>
----> 1 f

NameError: name 'f' is not defined
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-23 13:23:26 | 显示全部楼层
文腾 发表于 2021-4-23 13:06
如果继承了多个类
return super().__new__(cls) 这句话返回的是谁的实例

返回自身->T对象,new这里没有经过实例化的。new是控制T对象的实例化过程
class T(...):
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-23 13:25:08 | 显示全部楼层
__del__你在删除所有实例对象时才会运行,而不是del()时运行应该为return super().__del__(self)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表