我希望在定义类时注册一个类实例.理想情况下,下面的代码可以解决问题.
registry = {}
def register( cls ):
registry[cls.__name__] = cls() #problem here
return cls
@register
class MyClass( Base ):
def __init__(self):
super( MyClass, self ).__init__()
Run Code Online (Sandbox Code Playgroud)
不幸的是,此代码会生成错误NameError: global name 'MyClass' is not defined.
#problem here我正在尝试实例化的一行是什么,MyClass但装饰者还没有返回,所以它不存在.
是不是在使用元类或类似的东西?