考虑将此类作为字符串提供(不在文件中,我无法将其放在文件中):
cstr = """
class A:
def show(self, msg):
print "msg:", msg
"""
我试图按如下方式编译和执行它(在伪蟒中)。请注意,实际的类名A
并不重要 - 只是它包含我将调用的方法show()
。是的,一个强有力的例子可以getattr
并检查可调用以及除此之外的所有要点:
clazz = compile(cstr)
instance = clazz()
instance.show("hello")
import
和importlib
上有大量材料,字符串是文件和路径,而不是直接字符串作为输入。
我探讨了如何使用StringIO
创建一个类似文件的对象,该对象可以传递给import
,但它似乎也不是从流设施导入的。
这个问题被标记为可能的欺骗,但是对于其他问题的引用,像大多数一样,处理代码中已经存在的类定义,并且已经编译,然后通过名称实例化,例如' A&#39 ;.想象一个带有窗口的交互式GUI,用于在python中输入类def。我把它捕获为一个字符串。现在怎么样?