【发布时间】:2021-12-31 12:20:39
【问题描述】:
据我了解,在 Python 中,比较两个不同类的实例是否相等:
- 评估第一个实例的
__eq__方法并返回结果 - 除非结果是
NotImplemented,然后评估第二个实例的__eq__方法并返回结果 - 除非结果是
NotImplemented,然后比较对象标识并返回结果(为False)
我多次遇到引发异常的情况,这些情况可以帮助我发现代码中的错误。 Martijn Pieters 在this post 中勾勒出了一种实现方式,但也提到它是非 Python 的。
除了不符合Python语言之外,这种方法是否存在实际问题?
【问题讨论】:
-
你在使用 linter 吗?如果是这样,也许您可以将其配置为在比较不同类型的对象时发出警告?
-
the post you linked to 的选项 1. 恕我直言,您应该仅在确实需要时才使用它。我刚刚添加了一个comment there 来强调一个事实,即在 Python 中基本上构建多态性确实是非常可取的。
-
@md2perpe 你说得对,静态类型检查器可能也能解决问题。
标签: python