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