es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tag: METACLASS

¿Es posible crear clases sin la función “type”?

Si entiendo correctamente, la metaclase predeterminada utilizada para generar todas las clases es la función constructora type(…, …, …). En todos los ejemplos que he visto de uso de metaclases personalizadas, en algún momento aún estás llamando a la función constructora type(…, …, …) también. Es posible que estés devolviendo . . . Read more

Dill parece no respetar la metaclase.

Recientemente comencé a trabajar con dill. Tengo una metaclase que uso para crear un patrón Singleton. Siempre tengo un objeto en cualquier momento. Estoy utilizando dill para serializar. El problema es que una vez que se carga el objeto nuevamente, no respeta el patrón Singleton (impuesto por la metaclase) y . . . Read more

Herencia de metaclases en Python

Tengo una metaclase simple que convierte los métodos de las clases que comienzan con “get_” en propiedades: class PropertyConvertMetaclass(type): def __new__(mcs, future_class_name, future_class_parents, future_class_attr): new_attr = {} for name, val in future_class_attr.items(): if not name.startswith(‘__’): if name.startswith(‘get_’): new_attr[name[4:]] = property(val) else: new_attr[name] = val return type.__new__(mcs, future_class_name, future_class_parents, new_attr) Imaginemos . . . Read more

Utilizando la misma clase en la definición del atributo de la clase.

¿Cómo puedo hacer algo como esto? class Formulario(object, metaclass=…): pass class Campo(object): def __init__(self, clase_formulario_anidado=None): self.clase_formulario_anidado = clase_formulario_anidado class FormularioTarea(Formulario): hijos = Campo(clase_formulario_anidado=FormularioTarea) Rendereiza: NameError: el nombre ‘FormularioTarea’ no está definido El error ocurre en la línea que define el atributo ‘hijos’. Utilizo atributos de clase en la función __new__ . . . Read more