如何解决Python:如何创建超类为空且继承自type.NamedTuple的对象?
我想建立一个抽象,我只希望在应用程序的某些部分传递Foo
的子数据类型。所有这些实际上都键入NamedTuples
,因为它们没有功能。这使我从Foo
继承了typing.NamedTuple
,并且没有向Foo
添加任何其他功能。我的问题是在实例化Foo
的子类型时,遇到一个错误。
考虑以下代码段
from typing import NamedTuple
class Foo(NamedTuple):
pass
class Bar(Foo):
a: int
b: str
class Baz(Foo):
one_thing: float
another_thing: float
bar = Bar(4,"sdlfkjsdfkj")
print(bar)
代码段的输出将是以下错误...
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-20-b0f9b9293905> in <module>
15 another_thing: float
16
---> 17 bar = Bar(4,"sdlfkjsdfkj")
18 print(bar)
TypeError: __new__() takes 1 positional argument but 3 were given
但是,如果我让Bar
直接继承自typing.NamedTuple
,那么我可以获取以下代码段以使其正常运行
class Bar(NamedTuple):
a: int
b: str
bar = Bar(4,"sdlfkjsdfkj")
print(bar)
>>> Bar(a=4,b='sdlfkjsdfkj')
这是否意味着对于每个数据类定义(例如Bar
或Baz
),我都必须继承自typing.NamedTuple
?为什么我不能将其排除在顶级课程之外?
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。