Articles of metaclass

Se omiten todas las pruebas de unidad, pero una en Python mediante el uso de decoradores y metaclases

Estoy escribiendo pruebas unitarias para una MCU que comunica los comandos a través del puerto USB y verifica su respuesta. Si una prueba de unidad falla, tiene sentido para mí hacer un poco de depuración en la MCU. Por lo tanto, me gustaría deshabilitar todas las pruebas de unidad, excepto la que me gustaría depurar […]

Metaclase personalizada para crear propiedades híbridas en SQLAlchemy

Quiero crear una interfaz personalizada sobre SQLAlchemy para que algunas propiedades híbridas predefinidas sean compatibles de forma transparente. Específicamente, quiero crear una clase SpecialColumn y una metaclase para que cuando un usuario agregue SpecialColumn como un atributo de una clase, mi metaclase personalizada reemplace ese atributo con dos Column SQLAlchemy y agregue una propiedad híbrida […]

¿Cómo definir una metaclase de Python con Boost.Python?

La API de Python C tiene el objeto PyObject *PyType_Type , que es equivalente a type en el intérprete. Si quiero definir una metaclase en C ++, ¿cómo puedo configurar el type como una de sus bases en Boost.Python? Además, ¿qué otras cosas debo tener en cuenta al definir una metaclase de Python en C […]

Necesito entender el flujo de __init__, __new__ y __call__

class Singleton(type): def __init__(self, *args, **kwargs): print ‘calling __init__ of Singleton class’, self print ‘args: ‘, args print ‘kwargs: ‘, kwargs super(Singleton, self).__init__(*args, **kwargs) self.__instance = None def __call__(self, *args, **kwargs): print ‘running __call__ of Singleton’, self print ‘args: ‘, args print ‘kwargs: ‘, kwargs, ‘\n\n’ if self.__instance is None: self.__instance = super(Singleton, self).__call__(*args, **kwargs) […]

Python Metaclass: Entendiendo ‘with_metaclass ()’

Quiero preguntar qué significa la llamada with_metaclass() en la definición de una clase. P.ej: class Foo(with_metaclass(Cls1, Cls2)): ¿Es un caso especial donde una clase hereda de una metaclase? ¿Es la nueva clase una metaclase, también?

TypeErrors usando metaclases junto con herencia múltiple

Tengo dos preguntas que convierten las metaclases y la herencia múltiple. La primera es: ¿Por qué obtengo un TypeError para la clase Derived pero no para Derived2 ? class Metaclass(type): pass class Klass(object): __metaclass__ = Metaclass #class Derived(object, Klass): pass # if I uncomment this, I get a TypeError class OtherClass(object): pass class Derived2(OtherClass, Klass): […]

Sqlalchemy crea dinámicamente la tabla y la clase asignada

Dado un conjunto de nombres de columna y sus tipos, el objective es para instanciar una tabla y la clase asignada correspondiente. Está relacionado con la pregunta publicada aquí: Creación dinámica de clases en SQLAlchemy . Hasta ahora tengo lo siguiente: table = Table(tbl, metadata, *(Column(col, ctype, primary_key=pk, index=idx) for col, ctype, pk, idx in […]

¿Cuándo debo subclasificar EnumMeta en lugar de Enum?

En este artículo, Nick Coghlan habla sobre algunas de las decisiones de diseño que se EnumMeta tipo de EnumMeta PEP 435 , y sobre cómo se puede subclasificar a EnumMeta para proporcionar una experiencia de Enum diferente. Sin embargo, el consejo que doy (y soy el autor principal de Enum stdlib) sobre el uso de […]

Método de metaclase de Python3 Singleton no funciona

Vi muchos métodos para hacer un singleton en Python e intenté usar la implementación de metaclase con Python 3.2 (Windows), pero no parece que devuelva la misma instancia de mi clase de singleton. class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] class […]

¿Qué hace Python’s builtin __build_class__?

En Python 3.1, hay una nueva función incorporada que no conozco en el módulo builtins : __build_class__(…) __build_class__(func, name, *bases, metaclass=None, **kwds) -> class Internal helper function used by the class statement. ¿Qué hace esta función? ¿Por qué debe estar en builtins si es interno? ¿Cuál es la diferencia con la función de type(name, bases, […]