A veces me gusta escribir atributos getter para un objeto de manera que la primera vez que se invocan, el trabajo pesado se realiza una vez, y ese valor se guarda y se devuelve en futuras llamadas. En objetivo-c usaría una variable ivar o estática para mantener este valor. Algo como:¿Cuál es el patrón apropiado en Python para implementar getters perezosos?
- (id)foo
{
if (_foo == nil)
{
_foo = // hard work to figure out foo
}
return _foo
}
¿Este mismo patrón se sostiene bien en Python, o hay una forma más aceptada de hacerlo? Tengo básicamente lo mismo hasta ahora. Lo que no me gusta de mi solución es que mi objetivo se desordena con valores y captadores de esos valores:
def foo(self):
if not hasattr(self, "mFoo":
self.mFoo = # heavy lifting to compute foo
return self.mFoo
gracias, @property no va en esa clase, ¿verdad? –
@darren de hecho no es así, eso es lo que recibo por publicar en el lado equivocado de la medianoche. :) Lo he arreglado ahora. – lvc