但是,我发现 range 类有两个来自官方文档的__init__
签名。
class range(stop)
class range(start, stop[, step])
起初我以为它是这样实现的
def __init__(stop, start=None, step=None)
但这会改变参数的顺序start
和stop
所以我检查了python源代码,范围类在这里有完全不同的方法:
def __init__(self, stop): # real signature unknown; restored from __doc__
pass
@staticmethod # known case of __new__
def __new__(*args, **kwargs): # real signature unknown
""" Create and return a new object. See help(type) for accurate signature. """
pass
谁能解释它是如何工作的?我们可以在我们的对象类中做同样的事情吗?
与单次调度有关吗?