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