我尝试使用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
可以包含来自多种类型的参数-float
、bool
和{
现在,我尝试为函数编写类型注释,如下所示:
^{pr2}$但是我的PyCharm
IDE提醒我:
Except type 'Integral', got 'str' instead
以及:
Cannot find referance 'get' in bool | str | float'
我做错什么了吗?在
如果kwargs包含多个类型的参数,我应该如何编写kwargs的类型注释?在
请参见PyCharm问题跟踪程序上的this bug和{a2}。这显然是PyCharm的checker的一个问题;
mypy
(Python的另一个类型检查器)在我执行类似代码时不会抱怨。在已经有了一个修复程序,而且它显然是可用的in build 171.2014.23。在那之前,我认为
Any
可以作为一个临时的解决方案,让检查器停止抱怨。在相关问题 更多 >
编程相关推荐