Подклассы кортежа с несколькими аргументами __init__
Следующий код работает:
class Foo(tuple):
def __init__(self, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo([3, 4])
$ python play.py
Результат:
play.py:4: DeprecationWarning: object.__init__() takes no parameters
super(Foo, self).__init__(tuple(b))
(3, 4)
Но не следующее:
class Foo(tuple):
def __init__(self, a, b):
super(Foo, self).__init__(tuple(b))
if __name__ == '__main__':
print Foo(None, [3, 4])
$ python play.py
Результат:
Traceback (most recent call last):
File "play.py", line 7, in
print Foo(None, [3, 4])
TypeError: tuple() takes at most 1 argument (2 given)
Зачем?