Python 在类之前有一个try语句,在类之后有一个except语句,这有意义吗?

Python 在类之前有一个try语句,在类之后有一个except语句,这有意义吗?,python,Python,我在一些Python代码中发现了以下模式: try: from foo import bar class MyClass: def __init__(self): ... except ImportError: # Warning 在这里放置except语句有意义吗?importorror是否可以发生在foo import bar行中的之外的其他位置?如果您希望真正明确(这很少是错误),可以使用try except else

我在一些Python代码中发现了以下模式:

try:
    from foo import bar

    class MyClass:

        def __init__(self):
            ...

except ImportError:
    # Warning

在这里放置
except
语句有意义吗?
importorror
是否可以发生在foo import bar行中的
之外的其他位置?

如果您希望真正明确(这很少是错误),可以使用
try except else
构造

try:
    from foo import bar
except ImportError:
    # Warning
else:
    class MyClass:
        def __init__(self):
            ...

但是,正如您所指出的,
importorror
几乎肯定只会由import语句引发,为了简洁起见,您还可以将类定义包含在
try
-块中,人们确实经常会看到这种模式。

这不会发生在类中,但如果仅在导入有效时才应创建类,则这是一种跳过类创建然后处理错误的方便方法(例如,通过创建更简单的类变体)