Сначала я сделал глупый маленький класс
# cheese_helpers.py
class Cheese:
pass
Потом это случилось
# weird.py
import lxml
from typing import cast, List
import cheese_helpers
o: List[Any] = []
reveal_type(o) # builtins.List[Any] as expected
y = cast(List[cheese_helpers.Cheese], o)
reveal_type(y) # builtins.List[cheese_helpers.Cheese], as expected
# so far so good. And then:
z = cast(List[lxml.html.HtmlElement], o)
reveal_type(z) # builtins.List[Any] ???????????????
Эта последняя строка должна быть List[lxml.html.HtmlElement]
, если вы спросите меня. Сыр тоже не снабжен аннотациями, и это прекрасно работает.
Я уверен, что для того, чтобы последняя строка заработала, мне нужно получить / сделать несколько аннотаций lxml. Но мне кажется очень странным, что мой cast
полностью игнорируется. Я выбрал класс Cheese, и он работает. Я привел к классу HtmlElement, но это не так.
У меня вопрос почему?
import lxml.html
, а не простоimport lxml
? Ваш текущий импорт кажется неверным; вам нужно явно импортировать подмодуль. - person user2357112 supports Monica   schedule 26.09.2018