CST*_*bey 5 python metaprogramming python-2.7
我正在做动态类生成,可以在"编译"时间静态确定.我现在的简单案例看起来或多或少是这样的:
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风格的宏).
不,您必须生成 Python 代码,而不是将这些类“烘焙”为 Python 代码。
使用某种形式的字符串模板来生成 Python 源代码,将其保存到.py文件中,然后对它们进行字节编译。
然而,类生成仅在启动时发生一次。产生这些的成本真的那么高吗?
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |