Этот вопрос задает противоположное значение Inherit namedtuple from a base class in python, где целью является наследование подкласса из namedtuple, а не наоборот.Наследование от базового класса namedtuple - 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(self.__class__, self).__init__(a, b, c)
self.d = d
[выход]:
>>> Z(1,2,3,4)
<__main__.Z object at 0x10fcad950>
Но если BaseClass является namedtuple
:
from collections import namedtuple
X = namedtuple('X', 'a b c')
class Z(X):
def __init__(self, a, b, c, d):
super(self.__class__, self).__init__(a, b, c)
self.d = d
[выход]:
>>> Z(1,2,3,4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __new__() takes exactly 4 arguments (5 given)
Вопрос, Возможно ли наследовать namedtuples как базовый класс в Python? Так ли, как?
Могу ли я сделать 'self.append (г)'? – alvas
@alvas Нет, потому что 'namedtuple' - это в основном' tuple' (неизменный по дизайну и поэтому не имеет 'append') – MSeifert
@Mseifert Спасибо! Но = ( – alvas