为了账号安全,请及时绑定邮箱和手机立即绑定

我想在python用exec动态执行某些语句,动态定义一个类并随后调用这个类,但是出现了问题。

我想在python用exec动态执行某些语句,动态定义一个类并随后调用这个类,但是出现了问题。

侃侃无极 2019-02-20 21:43:08
问题的描述 现在有一个需求,就是python中使用字符串动态定义一个类,并随后使用其中的方法。 可以运行的代码 # /test.py # coding=utf-8 content = ''' class MyClass: def __init__(self): self.name = None self.age = None def do(): return MyClass() ''' exec content print do() # 或者最后一句话改成exec("print do()") 直接运行这段代码是没有问题的,得到了输出<__main__.MyClass instance at 0x000000000243EB88>。 不可以运行的代码 首先定义另一个actor.py文件: # /actor.py # coding=utf-8 def execute(content): exec content return do() 然后定义test.py文件: # /test.py # coding=utf-8 import actor content = """ class MyClass: def __init__(self): self.name = None self.age = None def do(): return MyClass() """ print actor.execute(content) 运行test.py文件,会出现NameError: global name 'MyClass' is not defined。我的需求就是,定义一个模块,在这个模块的函数中执行一段指定的字符串,动态定义一个类,并且需要调用这个类,现在遇到的问题如上所示,求助啊。。。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 1676 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信