Por lo general, el descriptor de Python se define como atributos de clase. Pero en mi caso, quiero que cada instancia de objeto tenga diferentes descriptores de conjunto que dependen de la entrada. Por ejemplo:¿Crear descriptor de propiedad por instancia?
class MyClass(object):
def __init__(self, **kwargs):
for attr, val in kwargs.items():
self.__dict__[attr] = MyDescriptor(val)
Cada objeto es tener un conjunto diferente de atributos que se decide en tiempo de creación de instancias. Dado que estos son objetos únicos, no es conveniente primero subclasificarlos.
tv = MyClass(type="tv", size="30")
smartphone = MyClass(type="phone", os="android")
tv.size # do something smart with the descriptor
Asignar descriptor al objeto no parece funcionar. Si intento acceder al atributo, obtuve algo como
<property at 0x4067cf0>
¿Sabes por qué esto no funciona? ¿Hay algún trabajo alrededor?
¿Por qué no utilizar diferentes subclases de MyClass con descripciones anuladas? – KurzedMetal
Editado para agregar más ejemplos. Supongo que el descriptor por instancia simplemente no se puede hacer. He trabajado alrededor utilizando __getattr__. Sin embargo, aún no entiendo la restricción del lenguaje subyacente. –
Los descriptores solo funcionan en el nivel de clase, lo siento. –