这只是一个猜测,因为您没有给我们展示足够的代码,而您给我们展示的内容实际上并没有重现问题,但是……
如果您在
exec函数内部执行此操作,则
locals()和
globals()将有所不同。在这种情况下,代码将像在类定义中一样被执行。因此,就像您这样做:
class _: from x import X class Y(X): # does not crash here, ... def __init__(self): X.__init__(self) # ... but here foo=Y()del _
(我以前认为您 还
必须在
Y()之外执行类似的操作
exec,但是user2357112的回答使我确信这是不必要的。)
如果是您的问题,您可以通过致电
exec(pre, globals(), globals())或来解决
exec(pre, locals(),locals())。(当然,哪一个合适,取决于您实际上要尝试执行的操作,而您没有告诉我们。)



