这个问题与Inherit namedtuple from a base class in python相反,目的是从一个命名元组继承一个子类,而不是相反.
在正常继承中,这有效:
class Y(object):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
class Z(Y):
def __init__(self, a, b, c, d):
super(Z, self).__init__(a, b, c)
self.d = d
[OUT]:
>>> Z(1,2,3,4)
但是,如果基类是一个namedtuple:
from collections import namedtuple
X = namedtuple('X', 'a b c')
class Z(X):
def __init__(self, a, b, c, d):
super(Z, self).__init__(a, b, c)
self.d = d
[OUT]:
>>> Z(1,2,3,4)
Traceback (most recent call last):
File "", line 1, in
TypeError: __new__() takes exactly 4 arguments (5 given)
问题是,是否可以在Python中将namedtuples继承为基类?是这样吗?