你为什么这么做?(执行分离)
为什么要用exec来做这个?
另外,使用exec执行此操作将:不工作。在
在python-2.x和python-3.x中给出不同的结果。在
示例:class demo:
a = 'a'
print(demo.a)
def start():
global demo
class demo: b = "b"
try:
print(demo.a)
except AttributeError:
print(demo.b)
if __name__ == '__main__':
start()
try:
print(demo.a)
except AttributeError:
print(demo.b)
无论是在python-2.x还是在python-3.x中,都将给出:
^{pr2}$
现在让我们用exec来试试:class demo:
a = 'a'
print(demo.a)
def start():
exec('global demo', globals(), locals())
exec('class demo: b = "b"', globals(), locals())
try:
print(demo.a)
except AttributeError:
print(demo.b)
if __name__ == '__main__':
start()
try:
print(demo.a)
except AttributeError:
print(demo.b)
输出python2.7:a
b
a
输出python3.2:a
a
a
Q:如何“动态创建类”?
正如kindall已经告诉过你的,exec不是这样做的方法。在
一个metaclass或一个class factory可以做到这一点,但是你确定你真的需要它吗?在