我熟悉关于 __new__
与 __init__
的理论。前者定义了如何创建类的实例(内存中的新对象),而后者则对其进行初始化(分配初始状态属性 - 字段)。网上有几篇关于这个的文章,例如 this one :
正如我所说,我确实理解其中的区别,但是,当我需要使用 __new__
而不是 __init__
时,我无法想象真实世界的情况示例。如果我可以在对象创建期间自定义某些东西,我可以将它移动到对象初始化中——只要它是同一个对象。提到的链接说:
我的问题来了 - 有人可以举一个例子,当覆盖 __new__
实际上是使用 __init__
无法完成的正确解决方案时,为什么会这样?
最佳答案
单调模式 - 最明显的例子。
当你又创建了一个对象时——它不是单调的,对吧?
因此,您必须在创建对象时处理此问题。解决方案的一种变体 - 使用 __new__()
方法。
关于python - 在 Python 中重写 __new__ 方法的真实世界示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24115857/