具有内置类型比较的用户定义类型

时间:2016-05-20 07:18:04

标签: python equality equivalence

我正在写一个上下文管理器,允许捕获某种类型的异常。

class MyTypeError(TypeError):
    pass


try:
    with AssertRaises(TypeError):
        raise MyTypeError()
except Exception as e:
    print(type(e).__name__)

当内置异常引发时,这个管理器工作正常,但是失败了:

__exit__(...)

在此示例中,用户定义的excepton引发,但此异常等同于TypeError,我希望它由上下文管理器作为TypeError处理。 我检查了`isinstance(MyTypeError(),TypeError)== True'并希望

USING OpenEdge.Net.HTTP.*.
USING OpenEdge.Net.URI.
USING Progress.Json.ObjectModel.JsonObject.

DEFINE VARIABLE oClient AS IHTTPClient NO-UNDO.

以相同的方式工作(考虑继承)。有没有解决方案?

1 个答案:

答案 0 :(得分:0)

检查异常本身(exc_val),就像使用isinstance()一样,或使用issubclass()

def __exit__(self, exc_type, exc_val, exc_tb):
    if issubclass(exc_type, self.exc_type):
        raise AssertionError
    return True