如何在Python 3中类型提示一个特定的dict类型但允许空dict?

qhhrdooz  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(146)

我想在不同的python文件之间传输数据,我创建了一个新的类型,这样不同的python文件都知道什么样的数据可以被期望。
我使用了下面的代码。

from typing import NewType

MyDataType = NewType("MyDataType", dict[str, dict[str, dict[str, dict[str, float]]]])

class App:
    def __init__(self, name: str, data: MyDataType):
        self.name = name
        self.data = data

app = App("app_1", data={}) # Pycharm warning: Expected type 'MyDataType', got 'dict' instead

然而,PyCharm给出了警告:

Expected type 'MyDataType', got 'dict' instead

基本上,我想让这个App.data接受空的dict。你能告诉我怎么做吗?谢谢!

ukqbszuj

ukqbszuj1#

把功劳归于@juanpa.arrivillaga和@Brian,根据他们的评论,我写下了解决我问题的答案,这样对未来的读者来说就更容易了。
基本上,它不是NewType的好用例,相反,TypeAlias是合适的,请参见下面的代码。

from typing import TypeAlias

MyDataType: TypeAlias = dict[str, dict[str, dict[str, dict[str, float]]]]

class App:
    def __init__(self, name: str, data: MyDataType):
        self.name = name
        self.data = data

app = App("app_1", data={})

相关问题