将作为字符串提供的python类源编译为可调用对象

时间:2018-04-20 13:42:36

标签: python

考虑将此类作为字符串提供(不在文件中,我无法将其放在文件中):

cstr = """                                                                    
class A:                                                                      
  def show(self, msg):                                                        
    print "msg:", msg                                                       
"""

我试图按如下方式编译和执行它(在伪蟒中)。请注意,实际的类名A并不重要 - 只是它包含我将调用的方法show()。是的,一个强有力的例子可以getattr并检查可调用以及除此之外的所有要点:

clazz = compile(cstr)
instance = clazz()   
instance.show("hello")

importimportlib上有大量材料,字符串是文件和路径,而不是直接字符串作为输入。

我探讨了如何使用StringIO创建一个类似文件的对象,该对象可以传递给import,但它似乎也不是从流设施导入的。

这个问题被标记为可能的欺骗,但是对于其他问题的引用,像大多数一样,处理代码中已经存在的类定义,并且已经编译,然后通过名称实例化,例如' A&#39 ;.想象一个带有窗口的交互式GUI,用于在python中输入类def。我把它捕获为一个字符串。现在怎么样?

0 个答案:

没有答案