__init__() 功能被称为当目的创建。那是正确的称呼一个对象 __init__() 再次,在其创建的?

instance = cls(p1=1, p2=2)
# some code
instance.__init__(p1=123, p2=234)
# some more code
instance.__init__(p1=23, p2=24)

为什么会有人想打电话 __init__() 对的对象是已经建立?

好的问题。我想重新初始化的实例的领域。

有帮助吗?

解决方案

它收到呼叫 __init__ 多于一次的对象,只要 __init__ 的编码是你想要的效果获得(无论可能).一个典型的情况下发生的(所以你会更好的代码 __init__ 适当地!-) 是时候你的类的 __new__ 方法返回的一个实例类:那 __init__ 要求返回的实例(对于什么可能是第二个或二十、时间、如果你继续"回收"的实例中,通过您的 __new__!-).

其他提示

你可以的,但这是一种打破什么 __init__ 是打算这样做。一个很大的蟒蛇是真的只是《公约》,所以您可能会以及按照然后和期望 __init__ 只能称为一次。我建议创建一个函数 initreset 或者什么其集实例的变量,使用的是当你想到重置的实例,并有 __init__ 只是呼叫 init.这肯定看起来更健全的:

x = Pt(1,2)
x.set(3,4)
x.set(5,10)

据我所知,它不会引起任何问题(编辑: 建议的那样,犹太教的使用情况 super(...).__init__(...)的),但是我认为有个 reset() 方法,并呼吁这两个在 __init__() 当你需要重新设置将吸尘器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top