在**kwargs中使用多个类型的类型注释

2024-09-27 21:31:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Python的type annotations和抽象类。 我的__init__函数如下所示:

from abc import ABCMeta

class SomeClass(object, metaclass=ABCMeta):
    def __init__(self, *args, **kwargs):
        print("Initiating %s object.", self.__class__.__name__)

        self.username = kwargs['data']
        assert isinstance(self.username, str)

        is_premioum = kwargs.get('premioum', False)

        self.money_investmant = kwargs.get('investmant')
        if isinstance(self.money_investmant, str):
            self.money_investmant = float(self.money_investmant)

如您所见,kwargs可以包含来自多种类型的参数-floatbool和{}。在

现在,我尝试为函数编写类型注释,如下所示:

^{pr2}$

但是我的PyCharmIDE提醒我:

Except type 'Integral', got 'str' instead

以及:

Cannot find referance 'get' in bool | str | float'

我做错什么了吗?在

如果kwargs包含多个类型的参数,我应该如何编写kwargs的类型注释?在


Tags: 函数self类型getobjectinittypeusername
1条回答
网友
1楼 · 发布于 2024-09-27 21:31:32

请参见PyCharm问题跟踪程序上的this bug和{a2}。这显然是PyCharm的checker的一个问题;mypy(Python的另一个类型检查器)在我执行类似代码时不会抱怨。在

已经有了一个修复程序,而且它显然是可用的in build 171.2014.23。在那之前,我认为Any可以作为一个临时的解决方案,让检查器停止抱怨。在

相关问题 更多 >

    热门问题