Я хочу, чтобы экземпляр класса был зарегистрирован, когда класс определен. В идеале приведенный ниже код подойдет.
registry = {}
def register( cls ):
registry[cls.__name__] = cls() #problem here
return cls
@register
class MyClass( Base ):
def __init__(self):
super( MyClass, self ).__init__()
К сожалению, этот код генерирует ошибку NameError: глобальное имя 'MyClass' не определено
.
Что происходит, находится в # проблема здесь строка
. Я пытаюсь создать экземпляр класса MyClass
, но декоратор еще не вернулся, поэтому его не существует.
Может быть, это как-то с помощью метаклассов или чего-то подобного?