问题描述
我想建立一个抽象,我只希望在应用程序的某些部分传递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 (将#修改为@)