通过浏览decimal.py
,它使用NotImplemented
了许多特殊方法.例如
class A(object):
def __lt__(self, a):
return NotImplemented
def __add__(self, a):
return NotImplemented
Run Code Online (Sandbox Code Playgroud)
未实现
可以由"富比较"特殊方法(
__eq__()
,__lt__()
和朋友)返回的特殊值,以指示未针对其他类型实现比较.
它没有谈论其他特殊方法,也没有描述行为.
它似乎是一个神奇的对象,如果从其他特殊方法返回引发TypeError
,并在"丰富的比较"特殊方法什么也不做.
例如
print A() < A()
Run Code Online (Sandbox Code Playgroud)
打印True
,但
print A() + 1
Run Code Online (Sandbox Code Playgroud)
加注TypeError
,所以我很好奇发生了什么以及NotImplemented的用法/行为是什么.
PyCharm警告我 Call to __init__ of super class is missed
class AbstractBase(object):
def __init__(self):
raise NotImplementedError()
class RealChild(AbstractBase):
def __init__(self):
#super(RealChild, self).__init__() ####
print('do stuff')
child=RealChild()
Run Code Online (Sandbox Code Playgroud)
但如果我打电话给它,那课AbstractBase
就会提高NotImplementedError
.
我是一只羊,不知道如何继续:-)