繁体   English   中英

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

[英]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)

它会避免这样做。

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

默认情况下,数据类装饰器为装饰的dataclass生成一个__eq__方法。 要禁用此功能(允许B继承A.__eq__ ),您需要调整装饰器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM