[英]Dataclass not inheriting __eq__() method from its parent
我有一个父数据类,一个子数据类继承了第一个 class。 我在父数据类中重新定义了__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)
@dataclass
装饰器添加了一个默认的__eq__
实现。
如果你使用
@dataclass(eq=False)
它会避免这样做。
默认情况下,数据类装饰器为装饰的dataclass
生成一个__eq__
方法。 要禁用此功能(允许B
继承A.__eq__
),您需要调整装饰器。
@dataclass(eq=False)
class B(A):
field2: str = None
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.