数据类不从其父级继承 __eq__() 方法

Nag*_*S N 15 python inheritance python-3.7 python-dataclasses

我有一个父数据类和一个子数据类继承第一个类。我__eq__()在父数据类中重新定义了方法。但是当我比较对象子数据类时,它不使用__eq__()父数据类中定义的方法。为什么会发生这种情况?我怎样才能解决这个问题?

微量元素

from dataclasses import dataclass


@dataclass
class A:
    name: str
    field1: str = None

    def __eq__(self, other):
        print('A class eq')
        return self.name == other.name


@dataclass
class B(A):
    field2: str = None


b1 = B('b', 'b1')
b2 = B('b', 'b2')
print(b1 == b2)
Run Code Online (Sandbox Code Playgroud)

khe*_*ood 14

装饰@dataclass器添加了一个默认__eq__实现。

如果你使用

@dataclass(eq=False)
Run Code Online (Sandbox Code Playgroud)

在 B 类上,它将避免这样做。

请参阅https://docs.python.org/3/library/dataclasses.html