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
我在 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