Articles of metaclass

¿Hay alguna razón para elegir __new__ sobre __init__ al definir una metaclase?

Siempre he configurado metaclases como esta: class SomeMetaClass(type): def __new__(cls, name, bases, dict): #do stuff here Pero acabo de encontrar una metaclase que fue definida así: class SomeMetaClass(type): def __init__(self, name, bases, dict): #do stuff here ¿Hay alguna razón para preferir uno sobre el otro? Actualización : tenga en cuenta que estoy preguntando sobre el […]

¿Para qué son útiles las metaclases de Python?

¿Qué se puede hacer con las metaclases que no pueden ser de otra manera? Alex Martelli dijo que hay tareas que no se pueden lograr sin las metaclases. ¿Qué son las metaclases de Python y los decoradores de clase que me gustaría saber cuáles son?

¿Cómo funciona la clase Meta de Django?

Estoy usando Django, que permite a las personas agregar parámetros adicionales a una clase usando la class Meta . class FooModel(models.Model): … class Meta: … Lo único que encontré en la documentación de Python fue: class FooMetaClass(type): … class FooClass: __metaclass__ = FooMetaClass Sin embargo, no creo que esto sea lo mismo.

¿Detectar si la clase fue definida declarativa o funcional – posible?

Aquí hay una clase simple creada declarativamente: class Person: def say_hello(self): print(“hello”) Y aquí hay una clase similar, pero se definió invocando la metaclase manualmente: def say_hello(self): print(“sayolala”) say_hello.__qualname__ = ‘Person.say_hello’ TalentedPerson = type(‘Person’, (), {‘say_hello’: say_hello}) Me interesa saber si son indistinguibles. ¿Es posible detectar tal diferencia desde el objeto de clase en sí? […]

¿Cómo funciona IPython’s? operador realmente funciona?

Así que pensé que para implementar una función de este tipo en una aplicación de consola, al agregar un signo de interrogación al final del nombre de una función se dertwigrá su cadena de documentación, probablemente habría utilizado una función como metaclases, donde, por definición / Importar, duplicaría todos los nombres de los miembros del […]

Django: Error al llamar a las bases de metaclase

Aquí está el error TypeError: error al llamar al conflicto de metaclase de las bases de metaclase: la metaclase de una clase derivada debe ser una subclase (no estricta) de las metaclases de todas sus bases La clase en cuestión dentro de mis modelos.py class Business(models.Model, forms.Form): name = models.CharField(max_length=128) tel_no = models.CharField(max_length=11) address_ln1 = […]

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) […]