Skip to main content
 首页 » 编程设计

python之从此类的 python 实例生成类的 python 代码

2025年05月04日8傻小

在我的代码中,我在运行时生成新的 Python 类。对于其中一些,我想生成 python 代码,就像我在 .py 文件中编写这些类一样。

假设我动态创建了一个类 A: type('A', (), {'bar':True} 相当于代码:

class A(object):  
    bar=True 

我想要的是从我的动态类中生成这个等效代码。 我正在尝试实现一个函数“generate_A_code”

kls_A = type('A', (), {'bar':True} 
kls_A.generate_A_code() 

希望对您有所帮助。

谢谢

请您参考如下方法:

从类对象本身生成 Python 代码几乎是不可能的。您需要以其他方式保存生成类的指令。


最好的方法可能是拥有一个创建类的函数,然后在生成的代码中导入和调用它。所以生成的代码看起来像这样:

kwargs = {answer=42, name='foo'} 
 
import class_maker 
SomeClass1 = class_maker.make_class(**kwargs) 

另一种选择是直接生成你想要的Python代码,exec生成类,然后和类一起保存。

code = '''class MyClass: 
    pass 
''' 
 
the_locals = {} 
exec(code, globals(), the_locals) 
MyClass = the_locals['MyClass'] 
MyClass._code = code 

与 exec 一样,请务必小心使用。它可以运行任何 Python 代码。认真思考是否有任何方法可以以不同的方式做您需要做的事情。人们会因为你使用 exec 而对你大喊大叫。 (但即使是 Python 标准库也将它用于动态类 sometimes。)