我有一个父数据集,一个子数据流继承了第一个类。我已经在父数据集中重新定义了__eq__()方法。但是,当我比较对象子数据集时,它没有使用父数据集中定义的__eq__()方法。为什么会发生这种情况?我怎么才能解决这个问题?
MWE
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)发布于 2020-04-25 18:33:05
@dataclass装饰器添加默认的__eq__实现。
如果您使用
@dataclass(eq=False)在B班,它会避免那样做。
发布于 2020-04-25 18:34:45
默认情况下,dataclass装饰器为修饰类生成__eq__方法。要禁用这一点(允许B继承A.__eq__),您需要调整装饰器。
@dataclass(eq=False)
class B(A):
field2: str = Nonehttps://stackoverflow.com/questions/61430552
复制相似问题