Câu hỏi này đặt câu hỏi ngược lại với Inherit namedtuple from a base class in python, trong đó mục đích là kế thừa một lớp con từ một tệp có tên và không ngược lại.Thừa kế từ một lớp cơ sở có tên là - Python
Trong thừa kế bình thường, hoạt động này:
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
[ra]:
>>> Z(1,2,3,4)
<__main__.Z object at 0x10fcad950>
Nhưng nếu baseclass là một 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
[ra]:
>>> Z(1,2,3,4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __new__() takes exactly 4 arguments (5 given)
Câu hỏi, là có thể kế thừa các tệp có tên là một lớp cơ sở bằng Python không? Vậy sao?
Tôi có thể làm 'self.append (d)'? – alvas
@alvas Không, bởi vì 'namedtuple' về cơ bản là một' tuple' (không thay đổi theo thiết kế và do đó không có 'append') – MSeifert
@Mseifert Cảm ơn! Nhưng = ( – alvas