NewType int arithmeti c изменяет выведенный тип на int - PullRequest
0 голосов
/ 17 апреля 2020

Скажите, что у меня есть несколько типов NewType:

from typing import NewType

kelvin = NewType('kelvin', int)
meters = NewType('meters', int)

А затем у нас есть:

my_temp: kelvin = 273
your_temp: kelvin = my_temp + 30

def has_fever(temperature: kelvin) -> bool:
    return temperature >= 311

Пока все хорошо. Но, если мы напишем

has_fever(my_temp + 50)

PyCharm выделит my_temp + 50 желтым и скажет «Ожидаемый тип« kelvin », вместо него получится int». Чтобы это исправить, мне нужно написать:

has_fever(kelvin(my_temp + 50))

Похоже, что когда мы выполняем арифметические c операции над целыми числами NewType, они неявно превращаются в целые. Это предполагаемое поведение средства проверки типа Python stati c согласно печатной документации , но возможно ли это изменить? Можем ли мы установить вывод типа PyCharm так, чтобы они оставались вновь определенным типом int (в данном случае, kelvin), поэтому мне не нужно приводить их обратно каждый раз, когда я делаю арифметику c для них?

...