临时异常类是在要用作模块的python脚本中使用“ type”动态定义的。当此类的实例被导入脚本时,它无法识别该类。下面是代码片段# the throwing module, defines dynamicallydef bad_function(): ExceptionClass = type( "FooBar", (Exception,), { "__init__": lambda self, msg: Exception.__init__(self, msg) }) raise ExceptionClass("ExceptionClass")使用代码import libt0try: libt0.bad_function()#except libt0.FooBar as e:#print eexcept Exception as e: print e print e.__class__可以解释为什么此脚本看不到libt0.FooBase吗?观察者输出的最后一行。
2 回答
繁星coding
TA贡献1797条经验 获得超4个赞
尚不清楚如果不执行以下操作,您如何期望FooBar存在?
def bad_function():
ExceptionClass = type( "FooBar", (Exception,),
{ "__init__": lambda self, msg: Exception.__init__(self, msg) })
globals()['FooBar'] = ExceptionClass
raise ExceptionClass("ExceptionClass")
狐的传说
TA贡献1804条经验 获得超3个赞
您在函数内部创建了该类,因此该类在模块的全局命名空间中不作为名称存在。实际上,它除了在bad_function执行时根本不存在。失败的原因相同:
# file1.py
def good_function():
x = 2
# file2.py
import file1
print file1.x
您的异常类只是内部的局部变量bad_function。
添加回答
举报
0/150
提交
取消