I am trying to use Python type annotations with an abstract class. My __init__ function looks like this:
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)
As you can see, kwargs can contain arguments of several types - float , bool and str .
Now I'm trying to write a type annotation for a function that looks like this:
def __init__(self, *args, **kwargs: Union[bool, str, float]) -> None:
But my PyCharm IDE warns me:
Except for the Integral type, instead, str
and
Can't find get link in bool | str | Float '
Am I doing something wrong?
How to write a type annotation for kwargs if it contains arguments from several types?
source share