Ayant un arrière-plan en Java, qui est très verbeux et strict, je trouve la possibilité de muter des objets Python pour les donner avec des champs autres que ceux présentés au constructeur vraiment "moche".Construction d'objets Python 3: quel est le plus accepté?
Essayer de m'habituer à une façon de penser Pythonic, Je me demande comment je dois permettre à mes objets d'être construits.
Mon instinct est d'avoir à passer les champs au moment de la construction, tels que:
def __init__(self, foo, bar, baz=None):
self.foo = foo
self.bar = bar
self.baz = baz
Mais cela peut devenir trop bavard et confus avec de nombreux champs à passer. Pour remédier à cela, je suppose que la meilleure méthode est de passe un dictionnaire au constructeur, dont les champs sont extraits:
def __init__(self, field_map):
self.foo = field_map["foo"]
self.bar = field_map["bar"]
self.baz = field_map["baz"] if baz in field_map else None
L'autre mécanisme que je peux penser est de ont les champs ajoutés ailleurs, tels que:
class Blah(object):
def __init__(self):
pass
...
blah = Blah()
blah.foo = var1
Mais comme cela se sent façon trop lâche pour moi.
(Je suppose que la question dans ma tête est de savoir comment je traite interfaces en Python ...)
Donc, pour réitérer la question suivante: Comment je construire mes objets en Python? Y a-t-il une convention acceptée?
Le temps de construction serait quand '__new__' est appelé. Au moment où '__init__' est appelé, l'instance existe déjà et c'est * l'heure d'initialisation *. – u0b34a0f6ae
@ kaizer.se Vive la terminologie. –