Dentro del cuerpo de una clase, el nombre de la clase aún no está definido, por lo que no está disponible. ¿No puedes simplemente escribir el nombre de la clase? Tal vez deba decir más sobre el problema para que podamos encontrar una solución para usted.
Crearía una metaclase para hacer este trabajo por usted. Se invoca en el momento de creación de clase (conceptualmente al final de la clase: bloque) y puede manipular la clase que se está creando. No he probado esto:
class InputAssigningMetaclass(type):
def __new__(cls, name, bases, attrs):
cls.input = get_input(name)
return super(MyType, cls).__new__(cls, name, bases, newattrs)
class MyBaseFoo(object):
__metaclass__ = InputAssigningMetaclass
class foo(MyBaseFoo):
# etc, no need to create 'input'
class foo2(MyBaseFoo):
# etc, no need to create 'input'
para aclarar lo que estoy tratando de hacer: necesito crear e inicializar una variable de clase, 'entrada', ** exterior de un método **. Tengo un montón de clases pequeñas, cada una de las cuales debe llamar a 'get_input' usando su nombre de clase como parámetro. Intento generalizar esto para no tener que ir a cada clase (habrá 100 o más) y escribir el nombre de la clase. –
OK, he actualizado mi respuesta con una metaclase que debería ayudar. –
¿A qué se refiere 'MyType' en la línea' super' en 'InputAssigningMetaclass'? –