首页 > 后端开发 > Python教程 > Python 类实例化中什么时候`__init__()`不遵循`__new__()`?

Python 类实例化中什么时候`__init__()`不遵循`__new__()`?

Mary-Kate Olsen
发布: 2024-12-14 14:35:15
原创
771 人浏览过

When Does `__init__()` Not Follow `__new__()` in Python Class Instantiation?

理解 __new__() 和 __init__() 执行的顺序

Python 的 __new__() 和 __init__() 方法在课堂上起着至关重要的作用实例化。 __new__() 创建类的新实例,而 __init__() 初始化该实例。预期的执行顺序是 __new__() 在 __init__() 之前调用。

但是,特定场景可能会改变此顺序。实现自定义 __new__() 方法时,可以操纵实例创建并返回现有实例而不是创建新实例。此行为用于实现像享元设计模式这样的模式。

在这种情况下,您可能会观察到 __init__() 在 __new__() 之后被调用,即使这是意外的。 __init__() 始终在 __new__() 之后调用,除非自定义 __new__() 返回现有对象。

要解决此问题,请考虑以更传统的方式实现所需的功能,例如使用工厂函数。或者,您可以在自定义 __new__() 方法中包含初始化代码。然而,这种方法可能被认为是“hacky”,不推荐作为最佳实践。

以上是Python 类实例化中什么时候`__init__()`不遵循`__new__()`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板