理解 __new__() 和 __init__() 执行的顺序
Python 的 __new__() 和 __init__() 方法在课堂上起着至关重要的作用实例化。 __new__() 创建类的新实例,而 __init__() 初始化该实例。预期的执行顺序是 __new__() 在 __init__() 之前调用。
但是,特定场景可能会改变此顺序。实现自定义 __new__() 方法时,可以操纵实例创建并返回现有实例而不是创建新实例。此行为用于实现像享元设计模式这样的模式。
在这种情况下,您可能会观察到 __init__() 在 __new__() 之后被调用,即使这是意外的。 __init__() 始终在 __new__() 之后调用,除非自定义 __new__() 返回现有对象。
要解决此问题,请考虑以更传统的方式实现所需的功能,例如使用工厂函数。或者,您可以在自定义 __new__() 方法中包含初始化代码。然而,这种方法可能被认为是“hacky”,不推荐作为最佳实践。
以上是Python 类实例化中什么时候`__init__()`不遵循`__new__()`?的详细内容。更多信息请关注PHP中文网其他相关文章!