Voici mon problème. Je veux que la classe suivante ait un tas d'attributs de propriété. Je pourrais les écrire tous comme foo
et bar
, ou basé sur d'autres exemples que j'ai vus, il me semble que je pourrais utiliser un décorateur de classe, une métaclasse, ou remplacer la méthode __new__
pour définir les propriétés automatiquement. Je ne suis pas sûr de ce que la «bonne» façon de faire serait.Devrais-je utiliser une métaclasse, un décorateur de classe ou remplacer la méthode __new__?
class Test(object):
def calculate_attr(self, attr):
# do calculaty stuff
return attr
@property
def foo(self):
return self.calculate_attr('foo')
@property
def bar(self):
return self.calculate_attr('bar')
En cas de doute, allez toujours simple et évidente. Si * vous * n'arrivez pas à le comprendre facilement, vous ne pouvez pas non plus demander aux mannequins (comme moi) de maintenir votre code. –
Lorsque vous changez la nature de vos questions, il est généralement préférable d'en ouvrir une nouvelle. –