小编CST*_*bey的帖子

永久缓存Python类生成的结果

我正在做动态类生成,可以在"编译"时间静态确定.我现在的简单案例看起来或多或少是这样的:

class Base(object):
    def __init__(self, **kwargs):
        self.do_something()

def ClassFactory(*args):
    some_pre_processing()
    class GenericChild(Base):
        def __init__(self, **kwargs):
            self.some_processing()
            super(GenericChild, self).__init__(*args, **kwargs)
    return GenericChild

Child1 = ClassFactory(1, 'Child_setting_value1')
Child2 = ClassFactory(2, 'Child_setting_value2')
Child3 = ClassFactory(3, 'Child_setting_value3')
Run Code Online (Sandbox Code Playgroud)

在导入时,Python解释器看起来编译成字节码,然后执行该文件(因此产生Child1,Child2Child3)每一次Python的实例.

有没有办法告诉Python编译文件,执行一次以解压缩Child类,然后将其编译到pyc文件中,这样解压缩只发生一次(即使是连续执行Python脚本)?

我有其他更复杂和更广泛的用例,所以简单地通过手工编写Child类来摆脱工厂并不是一个真正的选择.另外,如果可能的话,我想避免额外的预处理器步骤(比如在C预处理器中使用C风格的宏).

python metaprogramming python-2.7

5
推荐指数
1
解决办法
81
查看次数

标签 统计

metaprogramming ×1

python ×1

python-2.7 ×1