réinitialiser un objet avec self .__ init __ (...)
Quelqu'un pourrait-il expliquer qu'il est sécuritaire de le réinitialiser un objet en appelant "l'auto.init(". comme indiqué dans l'exemple simplifié?
La raison pour laquelle je te demande, c'est que je ne pouvais pas trouver cette méthode ni dans plusieurs python livres ni sur internet. Il y a certains qui suggèrent à la liste de tous les attributs et de les régler à la valeur initiale, un par un. Fondamentalement, je veux mettre mon objet à l'état initial après il a fini de certaines tâches.
class Book(object):
def __init__(self,name,author):
self.name = name
self.author = author
self.copies = 5
def reset(self):
self.__init__(self.name,self.author)
def incrementCopy(self):
self.copies += 1
Kite = Book('kite runner','khaled hosseini')
print 'initial number of copies:', Kite.copies
Kite.incrementCopy()
Kite.incrementCopy()
Kite.incrementCopy()
print '3 copies are added:', Kite.copies
Kite.reset()
print 'number of copies are reinitialized', Kite.copies
initial number of copies: 5
3 copies are added: 8
number of copies are reinitialized 5
source d'informationauteur | 2012-10-26
Vous devez vous connecter pour publier un commentaire.
La seule chose de spécial à propos de
__init__
est qu'il est automatiquement appelée lors de la création d'une instance. D'autres que c'est une méthode normale, et il est sûr à utiliser pour définir l'objet de votre retour à son état initial.Cela étant dit, juste parce que c'est sûr ne signifie pas que c'est une bonne idée. Autres personnes à la recherche de votre code pourrait être confondue par elle, et il n'est pas difficile de tout faire en
reset
méthode (qui__init__
pouvez même appeler) pour être plus explicite sur la façon dont la méthode est utilisée.Je pense qu'il serait une très mauvaise pratique, vous ne devriez pas
__init__
manuellement (à moins que l'appel de__init__
de la classe parent). Aussi, en passant de l'objet de données à__init__
est un peu étrange.Pourquoi pas quelque chose comme ceci: