相关疑难解决方法(0)

如何在定义类时自动注册一个类

我希望在定义类时注册一个类实例.理想情况下,下面的代码可以解决问题.

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但装饰者还没有返回,所以它不存在.

是不是在使用元类或类似的东西?

python oop design-patterns metaclass decorator

39
推荐指数
3
解决办法
2万
查看次数

标签 统计

decorator ×1

design-patterns ×1

metaclass ×1

oop ×1

python ×1