我正在做动态类生成,可以在"编译"时间静态确定.我现在的简单案例看起来或多或少是这样的:
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
,Child2
和Child3
)每一次Python的实例.
有没有办法告诉Python编译文件,执行一次以解压缩Child
类,然后将其编译到pyc
文件中,这样解压缩只发生一次(即使是连续执行Python脚本)?
我有其他更复杂和更广泛的用例,所以简单地通过手工编写Child
类来摆脱工厂并不是一个真正的选择.另外,如果可能的话,我想避免额外的预处理器步骤(比如在C预处理器中使用C风格的宏).