这个问题与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)
<__main__.Z object at 0x10fcad950>
但是如果基类是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 "<stdin>", line 1, in <module>
TypeError: __new__() takes exactly 4 arguments (5 given)
问题是,在Python中是否可以继承namedtuples作为基类?是这样吗,怎么办?
两年后,我带着完全相同的问题来到这里。
我个人认为
@property
装饰师更适合这里:我认为你可以通过包括所有领域来实现你想要的 在原始命名元组中,然后调整参数的数量 使用
__new__
正如上面Schwobasegl所建议的那样。例如,解决 max的情况下,将计算一些输入值 以下工程不是直接供应,而是:可以,但必须重写在
__init__
之前隐式调用的__new__
:但是
d
将只是一个独立的属性相关问题 更多 >
编程相关推荐