Quiero fusionar restricciones de las clases actuales y heredadas solo una vez que se carga una clase (¡no por objeto!).¿Cómo inicializar clases (no instancias) en Python?
class Domain(Validatable):
constraints = {...}
Para ello he definido un método _initialize_class_not_instance
que debe ser llamado una vez para cada clase:
class Validatable:
@classmethod
def _initialize_class_not_instance(cls):
# merge constraints from derived class and base classes
pass
__class__._initialize_class_not_instance() # doesn't work
# Validatable._merge_constraints() # doesn't work too
El problema es que __class__
no existe en este contexto y Validatable
no está definido también. Pero quiero evitar que el usuario de mi API tenga que llamar explícitamente al método de inicialización o tenga que usar un decorador de clases adicional.
¿Alguna idea de cómo inicializar la clase?
Tenga en cuenta que las clases ** son ** instancias, por lo general son instancias de 'tipo' pero como @Ignacio ha señalado que pueden ser instancias de una subclase personalizada de' tipo'. – Duncan