类的实例通过 isinstance 判断时却返回 False

2020-07-31 10:58:05 +08:00
 bulay

环境: python-3.6.5 djangorestframework-3.10.3 django-2.2.3

这是我自定义的一些异常:

继承关系是:WechatPaymentError -> BaseWechatError -> Exception 但是在统一处理异常时却出现了这样的情况:

通过 type(exc)可以看到 exc 是 WechatPaymentError 的实例, 但是对 WechatPaymentError 和 BaseWechatError 的 isinstance 判断都是 False

2074 次点击
所在节点    Python
5 条回复
SjwNo1
2020-07-31 13:32:29 +08:00
为什么在我的 shell 里没有这个问题
zachlhb
2020-07-31 13:55:24 +08:00
为何要判断类型,直接获取 exception 的 message 统一返回就行了啊
chenstack
2020-07-31 17:05:48 +08:00
看下是否 type(exc) == WechatPaymentError,会不会定义了两个 WechatPaymentError
Vegetable
2020-07-31 17:12:26 +08:00
无法复现,检查命名空间是不是有问题吧,一般这种情况,都是代码出了问题。
j0hnj
2020-07-31 17:43:53 +08:00
如楼上所说,这种一般都是在两个模块里定义了两个 `WechatPaymentError`

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/694559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX