EDIT: Так, ви можете; але вам потрібно обдурити: назва класу, що виконується на даний момент, присутня в стеку викликів, і traceback
модуль дозволяє отримати доступ до стеку.
>>> import traceback
>>> def get_input(class_name):
... return class_name.encode('rot13')
...
>>> class foo(object):
... _name = traceback.extract_stack()[-1][2]
... input = get_input(_name)
...
>>>
>>> foo.input
'sbb'
Однак я б цього не робив; Моя оригінальна відповідь - це все-таки власні переваги як рішення. Оригінальна відповідь:
мабуть, найпростішим рішенням є використання декоратора, який схожий на відповідь Неда, що стосується метакласів, але менш потужний (декоратори здатні до чорної магії, але метакласи здатні до старовинної, окультної чорної магії)
>>> def get_input(class_name):
... return class_name.encode('rot13')
...
>>> def inputize(cls):
... cls.input = get_input(cls.__name__)
... return cls
...
>>> @inputize
... class foo(object):
... pass
...
>>> foo.input
'sbb'
>>>