0

我知道python 中的多个构造函数是不可能的

但是,我发现 range 类有两个来自官方文档的__init__签名。

class range(stop)
class range(start, stop[, step])

起初我以为它是这样实现的 def __init__(stop, start=None, step=None)但这会改变参数的顺序startstop

所以我检查了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

谁能解释它是如何工作的?我们可以在我们的对象类中做同样的事情吗?

单次调度有关吗?

4

0 回答 0