GOOGLE ADS

miércoles, 13 de abril de 2022

¿Cómo alias un descriptor personalizado en Python?

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_descriptoruna 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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...