开发者社区> 问答> 正文

注册元编程类

我想使用Python的元编程功能以编程方式创建类。我可以看到这里如何实例化Foo

 Foo = type('Foo', (), {})
 foo = Foo()

但是如果类型调用发生在函数中呢?我怎样才能让Foo以与类Foo(): pass相同的方式注册?我想在不维护类变量foo的情况下调用foo = foo()。 问题来源StackOverflow 地址:/questions/59386841/register-metaprogramming-class

展开
收起
kun坤 2019-12-25 21:47:44 378 0
1 条回答
写回答
取消 提交回答
  • 作为一个全球:

    def def_Foo():
        global Foo
        Foo = type('Foo', (), {})
    
    def_Foo()
    foo = Foo()
    

    作为模块的一部分:

    import types
    
    quux = types.ModuleType('quux')     # skip if you already have a module
    def def_quux_class(name):
        setattr(quux, name, type(name, (), {}))
    
    def_quux_class("Foo")
    foo = quux.Foo()
    

    定义一个任意的顶层类:

    def def_class(name):
        globals()[name] = type(name, (), {})
    
    def_class("Foo")
    foo = Foo()
    
    2019-12-25 21:47:50
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载