У меня есть кусок кода
1. b = u'\xe6' #type: unicode
2. c = str(b) #type: str
3. d = c #type: str
Я запускаю это с флагом python 2 в mypy.
Я ожидаю, что в строке 2 должна быть ошибка. Str (b) возвращает тип unicode , а c имеет ожидаемый тип str , поэтому должна быть проблема несовместимости типов. Но никаких ошибок не выдается.
С другой стороны, если я явно сделаю
1. b = u'\xe6' #type: unicode
2. c = str(b) #type: unicode
3. d = c #type: str
Тогда в строке 3 возникает ошибка, утверждающая, что не может присвоить юникод str, что несколько ожидаемо.
Так что проблема в моем понимании str (), разве str () не должен возвращать тот же тип, что и его ввод? или он неявно приводит все к str, если да, то не должно быть ошибки в строке 2 вместо строки 3 во втором примере.
Из текущего поведения str () принимает тип переменной, которой она назначается.