El paso a paso o código que verás en este artículo es la resolución más rápida y efectiva que encontramos a esta duda o dilema.
Solución:
Puede ejecutar el código de inserción inmediatamente después de crear una clase:
class Foo():
...
vars=('tx', 'ty', 'tz') # plus plenty more
for v in vars:
setattr(Foo, v, 0)
Además, puede almacenar dinámicamente la variable mientras se crea la clase:
class Bar:
locals()['tx'] = 'texas'
Si por alguna razón no puede usar la respuesta de Raymond de configurarlos después de la creación de la clase, entonces quizás podría usar una metaclase:
class MetaFoo(type):
def __new__(mcs, classname, bases, dictionary):
for name in dictionary.get('_extra_vars', ()):
dictionary[name] = 0
return type.__new__(mcs, classname, bases, dictionary)
class Foo(): # For python 3.x use 'class Foo(metaclass=MetaFoo):'
__metaclass__=MetaFoo # For Python 2.x only
_extra_vars = 'tx ty tz'.split()
Llega tarde a la fiesta pero usa el type
constructor de clases!
Foo = type("Foo", (), k: 0 for k in ("tx", "ty", "tz"))
valoraciones y reseñas
Recuerda dar recomendación a este artículo si te fue de ayuda.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)