Así es como se ve mi módulo:
class Singleton:
class Descriptor:
def __get__(self, obj: Singleton, objtype=None):
return obj.some_attr
a_descriptor = Descriptor()
def load(self):
# some_attr doesn't have a value unless this function is called
self.some_attr = ""
_default_singleton = Singleton()
def load():
_default_singleton.load()
a_descriptor = _default_singleton.a_descriptor # raises AttributeError
Creo que mi única opción es hacer que el nivel del módulo sea a_descriptor
una propiedad que envuelva el descriptor, pero ¿hay alguna forma de alias de una propiedad sin hacer que se llame a su captador?
Solución del problema
No está llamando a su load()
función para establecer el valor de atributo requerido antes de intentar leerlo.
Esto funcionaría:
class Singleton:
class Descriptor:
def __get__(self, obj: Singleton, objtype=None):
return obj.some_attr
a_descriptor = Descriptor()
def load(self):
# some_attr doesn't have a value unless this function is called
self.some_attr = ""
_default_singleton = Singleton()
def load():
_default_singleton.load()
load()
a_descriptor = _default_singleton.a_descriptor
No hay comentarios.:
Publicar un comentario