蟒蛇:多个调至init__()关于同一个实例
-
23-09-2019 - |
题
的 __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__
只能称为一次。我建议创建一个函数 init
或 reset
或者什么其集实例的变量,使用的是当你想到重置的实例,并有 __init__
只是呼叫 init
.这肯定看起来更健全的:
x = Pt(1,2)
x.set(3,4)
x.set(5,10)
据我所知,它不会引起任何问题(编辑: 建议的那样,犹太教的使用情况 super(...).__init__(...)
的),但是我认为有个 reset()
方法,并呼吁这两个在 __init__()
当你需要重新设置将吸尘器。
不隶属于 StackOverflow