在这里覆盖__new__的目的是什么?

时间:2018-07-17 19:16:46

标签: python

我正在阅读Python intervaltree模块的代码,并看到以下代码(source code here):

class Interval(namedtuple('IntervalBase', ['begin', 'end', 'data'])):
    __slots__ = ()  # Saves memory, avoiding the need to create __dict__ for each interval

    def __new__(cls, begin, end, data=None):
        return super(Interval, cls).__new__(cls, begin, end, data)

__new__函数中似乎没有做任何额外的事情,那么这里覆盖它的目的是什么?

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:5)

父类是:

namedtuple('IntervalBase', ['begin', 'end', 'data'])

此处的参数beginenddata都是必需的参数。

Interval中,argspec已更改:data现在为可选,并且默认为None