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