我熟悉关于 __new____init__ 的理论。前者定义了如何创建类的实例(内存中的新对象),而后者则对其进行初始化(分配初始状态属性 - 字段)。网上有几篇关于这个的文章,例如 this one :



正如我所说,我确实理解其中的区别,但是,当我需要使用 __new__ 而不是 __init__ 时,我无法想象真实世界的情况示例。如果我可以在对象创建期间自定义某些东西,我可以将它移动到对象初始化中——只要它是同一个对象。提到的链接说:



我的问题来了 - 有人可以举一个例子,当覆盖 __new__ 实际上是使用 __init__ 无法完成的正确解决方案时,为什么会这样?

最佳答案

单调模式 - 最明显的例子。
当你又创建了一个对象时——它不是单调的,对吧?
因此,您必须在创建对象时处理此问题。解决方案的一种变体 - 使用 __new__() 方法。

关于python - 在 Python 中重写 __new__ 方法的真实世界示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24115857/

10-16 10:39