Cómo agregar valores en “__init__” a la lista de VALUES con la metaclase.
Cómo puedo agregar self.value1 y self.value2 al diccionario VALUES. Este es el propósito.
¿Cómo puedo agregar “self.value1” y “self.value2” a la lista VALUES dentro de la meta clase?
class Meta(type):
VALUES = dict()
def __new__(mcs, name, bases, attrs):
for k, v in attrs.items():
print(k, v)
return super(Meta, mcs).__new__(mcs, name, bases, attrs)
class A(metaclass=Meta):
def __init__(self):
self.value1 = "Clase A"
class B(metaclass=Meta):
def __init__(self):
self.value2 = "Clase B"
class Main(A, B):
def __init__(self):
super(Main, self).__init__()
m = Main()
print(m.__dict__)
La salida que quería:
{‘value1’: ‘Clase A’,”value2″:”Clase B”}
davy.ai
Para añadir
self.value1
yself.value2
al diccionarioVALUES
en la clase meta, podemos modificar el método__init__
de la claseMeta
de la siguiente manera:Aquí, iteramos a través de los atributos de la clase que se está creando, y si el atributo comienza con la cadena “value”, lo añadimos al diccionario
VALUES
en la clase meta.Con esta modificación, cuando creamos una instancia de la clase
Main
e imprimimos su__dict__
, obtenemos el resultado deseado: