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

Python NotImplemented常数

段干宏硕
2023-03-14
问题内容

纵览decimal.py,它NotImplemented在许多特殊方法中使用。例如

class A(object):
    def __lt__(self, a):
        return NotImplemented

    def __add__(self, a):
        return NotImplemented

在Python的文件说:

未实现

可以通过“丰富的比较”特殊方法(__eq__()__lt__()和)返回的特殊值,以指示未针对其他类型实现比较。

它没有讨论其他特殊方法,也没有描述行为。

它似乎是一个魔术对象,如果从其他特殊方法返回则引发该对象TypeError,并且在“丰富比较”中特殊方法什么也不做。

例如

print A() < A()

打印True,但是

print A() + 1

提高了TypeError,所以我对正在发生的事情以及NotImplemented的用法/行为感到好奇。


问题答案:

NotImplemented允许您指出尚未执行两个给定操作数之间的比较(而不是表明该比较有效,但False对于这两个操作数却产生yield )。

从Python语言参考中:

对于对象x和y,首先x.__op__(y) 尝试。如果未实现或返回NotImplemented,请
y.__rop__(x)尝试。如果也未实现或返回NotImplemented,则引发TypeError异常。但是请参见以下异常:

上一项的例外:如果左操作数是内置类型或新样式类的实例,而右操作数是该类型或类的适当子类的实例,并且覆盖基数的__rop__()方法,则右操作的__rop__()方法是左操作的尝试过__op__()
的方法。这样做是为了使子类可以完全覆盖二进制运算符。否则,左操作数的__op__()方法将始终接受右操作数:当期望给定类的实例时,该类的子类的实例总是可接受的。



 类似资料:
  • 本文向大家介绍C++常量详解二(常量形参,常量返回值,常量成员函数),包括了C++常量详解二(常量形参,常量返回值,常量成员函数)的使用技巧和注意事项,需要的朋友参考一下 1.常量形参 当形参有顶层const或者底层const的时候,传给它常量对象或者非常量对象都是可以的,在这里我们主要考虑形参无const, 而实参有const的情况,其实这里也十分简单,只需要记住一点:底层const的限制,就可

  • 我搜索了数据库和食谱,但似乎找不到正确的答案。我有一个非常简单的python代码,它总结了一个范围内的自我权力。我需要这个非常非常大的数字的最后十位,我已经尝试了get上下文(). prec,但是我仍然达到了极限。 代码如下: 我怎么能看到这些美丽的数字?它在我的四核上打印速度相对较快。这只是为了给ProjectEuler带来乐趣,问题#48,请不要破坏者。我不想要解决方案,也不想让工作为我完成,

  • 问题内容: 可以使用AngularJS将常量注入另一个常量吗? 例如 我需要使用角度常数,因为我需要将其注入配置程序中。即 我知道您只能将常量和提供程序注入到配置例程中,并且我的理解是您可以将依赖项注入到提供程序中,但是,这似乎并不是这种情况下的最佳方法… 在此先感谢您的帮助! 问题答案: 没错,将foo和bar都注册为常量是不可能的。 同样,使用提供程序作为解决方法,除了必须将数据存储在提供程序

  • 应用程序通常会通过抛出另一个异常来响应异常。 实际上,第一个异常引起第二个异常。 它可以是非常有助于用户知道什么时候一个异常导致另一个异常。 “异常链(Chained Exceptions)”帮助程序员做到这一点。 以下是Throwable中支持异常链的方法和构造函数。 Throwable getCause() Throwable initCause(Throwable) Throwable(St

  • 1. org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool异常的原因? SDK中HttpClient连接池设置的大小不够。修改EMQClientFactory.generateHttpClient(10, 10)方法的参数即可。 2.java.net.SocketT

  • 本文向大家介绍VBA 常数(Const),包括了VBA 常数(Const)的使用技巧和注意事项,需要的朋友参考一下 示例 如果您的值在应用程序中从未改变,则可以定义一个命名常量,并使用它代替文字值。 您只能在模块或过程级别使用Const。这意味着变量的声明上下文必须是类,结构,模块,过程或块,并且不能是源文件,名称空间或接口。 虽然指定常量类型被认为是一种很好的做法,但并非严格要求。不指定类型仍将