当前位置: 首页 > 面试题库 >

__ne__是否应在Python中实现为__eq__的否定形式?

许涵容
2023-03-14
问题内容

我有一个我想覆盖该__eq__方法的类。我也应该重写该__ne__方法似乎很有意义。我应该这样__ne__否定实施,__eq__还是一个坏主意?

class A:

    def __init__(self, state):
        self.state = state

    def __eq__(self, other):
        return self.state == other.state

    def __ne__(self, other):
        return not self.__eq__(other)

问题答案:

是的,那很好。实际上,文档敦促您在定义__ne__时定义__eq__

比较运算符之间没有隐含的关系。的真相x==y并不意味着那x!=y 是错误的。因此,在定义时 __eq__(),还应该定义一个,__ne__()以便操作符能够按预期运行。

在很多情况下(例如这种情况),它__eq__与否的结果一样简单,但并不总是如此。



 类似资料:
  • 问题内容: 我有一个我想覆盖该方法的类。我也应该重写该方法似乎很有意义。我应该这样否定实施,还是一个坏主意? 问题答案: 是的,那很好。实际上,文档敦促您在定义时定义: 比较运算符之间没有隐含的关系。的真相并不意味着那 是错误的。因此,在定义时 ,还应该定义一个,以便操作符能够按预期运行。 在很多情况下(例如这种情况),它与否的结果一样简单,但并不总是如此。

  • 问题内容: 这里的答案为需要返回除的逻辑倒数以外的内容的情况提供了有用的参考,但是我无法想象有任何这种情况。有什么例子吗? 问题答案: SQLAlchemy是一个很好的例子。对于未启动的用户,SQLAlchemy是一个ORM,并使用Python表达式生成SQL语句。在诸如 在不返回一个布尔值,但最终能产生像SQL查询的对象。倒数会产生类似的结果,因此需要定义两种方法。

  • 问题内容: 我有一个对象。我想确定对象表示的类型是否实现特定的接口。我想知道如何实现? 我有以下代码。基本上,它所做的是获取指定包中所有类的数组。然后,我想遍历数组并将添加实现接口的Class对象添加到我的地图。问题是将一个对象作为参数。我无法实例化接口。所以我对此感到茫然。有任何想法吗? 问题答案: 您应该使用:

  • 我有一个对象。我想确定对象表示的类型是否实现了特定的接口。我想知道这是如何实现的? 我有以下代码。基本上,它所做的是获取指定包中所有类的数组。然后,我想遍历数组并将实现接口的类对象添加到映射中。问题在于将对象作为参数。我无法实例化接口。所以我有点不知所措。有什么想法吗?

  • 问题内容: 如果路径不存在,我正在尝试创建目录,但是!(不是)运算符不起作用。我不确定如何在Python中取反…执行此操作的正确方法是什么? 问题答案: Python中的求反运算符为。因此,只需将替换为即可。 对于您的示例,请执行以下操作: 对于您的特定示例(如Neil在评论中所述),您不必使用模块,只需使用即可获得所需的结果,并添加了异常处理优势。 例:

  • 问题内容: 在界面中添加Javadoc注释并在实现中添加非Javadoc注释是否正确? 当您自动生成注释时,大多数IDE都会为实现生成非JavaDoc注释。具体方法不应该有描述吗? 问题答案: 对于仅实现(不是覆盖)的方法,请确定为什么不这样做,尤其是如果它们是公共的。 如果您处于压倒一切的情况,并且打算复制任何文本,那么绝对不能。复制是导致差异的必经之路。结果,用户将基于检查父类型还是子类型中的