A volte mi piace scrivere attributi getter per un oggetto tale che la prima volta che vengono chiamati, il sollevamento pesante viene eseguito una volta e tale valore viene salvato e restituito nelle chiamate future. Nell'obiettivo c userei un ivar o una variabile statica per mantenere questo valore. Qualcosa del tipo:Qual è il modello corretto in Python per implementare i gettatori pigri?
- (id)foo
{
if (_foo == nil)
{
_foo = // hard work to figure out foo
}
return _foo
}
Questo stesso modello regge bene in Python, oppure esiste un modo più accettabile per farlo? Ho praticamente la stessa cosa finora. Quello che non mi piace di mia soluzione è che il mio oggetto si riempie con i valori e getter per quei valori:
def foo(self):
if not hasattr(self, "mFoo":
self.mFoo = # heavy lifting to compute foo
return self.mFoo
grazie, @property non va su quella classe anche se lo fa? –
@darren infatti non è così, è quello che ottengo per postare nella parte sbagliata di mezzanotte. :) L'ho risolto ora. – lvc