python 为什么getattr()在try语句中引发异常时会退出程序?

krugob8w  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(175)

我有一个名为table_builders.py的文件,在那里我定义了多个类。在另一个脚本中,我正在循环导入它们。我试图导入的类在builders_list中列出。
下面是我如何导入的。

  1. import table_builders
  2. for b in builders_list:
  3. try:
  4. globals()[b] = getattr(table_builders, b)
  5. print(f'Successfully imported {b}')
  6. except ImportError as e:
  7. print(f'\nError importing {b}. \n{e}')

字符串
table_builders.py中并没有定义builders_list中的所有类,但是由于我是在try:语句中进行导入的,所以我希望代码导入所有已经定义的类,跳过那些还没有定义的类。
然而,当第一次导入失败时,程序会立即退出。终端显示:

  1. Successfully imported CustomersBuilder
  2. Successfully imported FacilitiesBuilder
  3. Traceback (most recent call last):
  4. File ......
  5. globals()[b] = getattr(table_builders, b)
  6. AttributeError: module 'table_builders' has no attribute 'CustomerFulfillmentPoliciesBuilder'


请注意,except中的print语句实际上从不打印。
为什么getattr()在try:语句中抛出错误时退出程序?
有没有其他方法来执行导入,以便在导入失败时程序不会退出?
谢谢你,谢谢

wnrlj8wa

wnrlj8wa1#

感谢那些在原始帖子下面评论的人。我捕捉到了错误的错误(实际上并没有在循环中导入)。

相关问题