Dans le corps d'une classe, le nom de la classe n'est pas encore défini, il n'est donc pas disponible. Ne pouvez-vous pas simplement taper le nom de la classe? Peut-être avez-vous besoin d'en dire plus sur le problème afin que nous puissions trouver une solution pour vous.
Je créerais une métaclasse pour faire ce travail pour vous. Il est appelé au moment de la création de la classe (conceptuellement à la toute fin de la classe: block), et peut manipuler la classe en cours de création. Je n'ai pas testé ceci:
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'