class 个实例的类型

Type of class instance

我在 Python 3.9.2 上有以下代码 运行,我无法运行。

from__future__ import annotations

class P():
    def __eq__(self:P, comparand:P) -> bool:
        return false

Mypy 抱怨

Argument 1 of "__eq__" is incompatible with supertype "object";
supertype defines the argument types as "object"

关于如何做到这一点有什么建议吗?

__eq__ 应该能够将您的实例与任何类型的对象进行比较。您正在覆盖对象 class 的 __eq__ 方法,并且您正在为参数 1 使用不同的参数类型定义 __eq__

通过将参数 1 更改为对象来修复它:

from __future__ import annotations

class P():
    def __eq__(self:P, comparand) -> bool:
        return False

问题是 eq 方法适用于任何对象,没有 :P 它会起作用。 您可以在代码中使用 isinstance 检查参数的类型(如果需要)。

from__future__ import annotations

class P():
    def __eq__(self, comparand) -> bool:
        return false