この質問は、Inherit namedtuple from a base class in pythonの反対の質問です。ここでの目的は、namedtupleのサブクラスを継承することであり、その逆もありません。通常の継承では、この作品namedtuple基底クラスから継承する - Python
:
>>> Z(1,2,3,4)
<__main__.Z object at 0x10fcad950>
しかし、基底クラスが
namedtuple
ある場合:
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
を[出力]
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(d)を'行うことができます。たとえば、入力値のいくつかは、次のような作品を を計算するのではなく、直接供給されることになっている 最大のケースに対処するには? – alvas
@alvasいいえ、 'namedtuple'は基本的に' tuple'です(設計によって不変なので 'append'はありません)。 – MSeifert
@Mseifertありがとう!しかし、=( – alvas