Ecco il mio problema. Voglio che la seguente classe abbia un sacco di attributi di proprietà. Potrei scriverli tutti come foo
e bar
o in base ad altri esempi che ho visto, sembra che potrei usare un decoratore di classe, una metaclasse, o sovrascrivere il metodo __new__
per impostare le proprietà automaticamente. Non sono sicuro di quale sarebbe il modo "giusto" di farlo.Devo usare una metaclasse, un decoratore di classe, o sovrascrivere il metodo __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')
In caso di dubbio, sempre andare con semplice ed evidente. Se * tu * non riesci a capirlo facilmente, nemmeno i manichini (come me) a cui verrà chiesto di mantenere il tuo codice. –
Quando cambi la natura delle tue domande, di solito è meglio solo aprirne una nuova. –