Тип предупреждения Pycharm

Учитывая следующий пример:

class A:
    def __init__(self, x: (float, np.ndarray) = 0.05):
        self.x = x

я намереваюсь дать пользователю подсказку, что аргумент x может быть числом с плавающей запятой или массивом numpy. Если ничего не указано, установите значение по умолчанию 0,05. Это правильное использование? Если да, то почему Pycharm нагревается, когда я инициирую A следующим образом? :

 a = A(x=np.random.rand(3, 3))   #Expected type 'float', got 'ndarray' instead

Если это не правильное использование, в чем я ошибаюсь? Разве x:(float,np.ndarray) не означает, что x может быть числом с плавающей запятой или np.ndarray?


person JustANoob    schedule 06.02.2020    source источник


Ответы (1)


Используйте Union:

from typing import Union

class A:
    def __init__(self, x: Union[float, np.ndarray] = 0.05):
        self.x = x
person DeepSpace    schedule 06.02.2020
comment
Так что же означает x:(float,np.ndarray)? - person JustANoob; 06.02.2020
comment
@JustANoob просто float. Не уверен, почему, хотя - person DeepSpace; 06.02.2020