当有一个方法可以返回多个东西时,如何让pycharm根据实际返回值提供准确的intellisense选项?你知道吗
Expected type 'Union[str, Type[PyPage]]', got 'ExamplePageObject' instead
示例PageObject扩展PyPage
_basic_page = ExamplePageObject()
def test_simple_page_object_launching(self):
assert start(self._basic_page).retrieve_the_text() == "Hello World"
电话:
def start(entry_point: Union[str, Type[PyPage]]) -> Union[PyleniumDriver, Type[PyPage]]:
return PyleniumDriver().maximize().goto(entry_point)
电话:
def goto(self, entry_point: Union[str, Type[PyPage]]) -> Union[PyleniumDriver, Type[PyPage]]:
url = (
PyleniumConfig().base_url + entry_point
if isinstance(entry_point, str)
else entry_point.url
)
if not url:
raise PyPageException(
"The url was empty, did your page object specify the self.url parameter?"
)
else:
self.driver.get(url)
if isinstance(entry_point, PyPage):
return entry_point
return self
根据start()提供的内容,它应该返回该页的一个实例,Pycharm应该“知道”该页所包含的方法,这可能吗?你知道吗
通过将generics和overloads组合在一起,您可能会得到一些基本上有效的东西。你知道吗
(注意:这些是指向mypy文档的链接,但是所描述的行为应该或多或少与PyCharm的行为相同。mypy和PyCharm都非常尊重pep484类型暗示语义。)
例如,类似这样的情况:
重载允许您提供一种有限的模式匹配类型的东西类型检查器将分析您的输入参数,找出哪个已定义的重载最匹配,并选择相应的返回值。你知道吗
TypeVar允许我们创建一个泛型函数简而言之,一旦类型检查器推断出
_T
的类型应该在一个地方,它将在_T
出现的所有其他地方使用完全相同的类型。你知道吗我建议您在尝试使用这些功能之前先阅读上面的两个链接。我对所发生的事情的解释还不够充分。你知道吗
相关问题 更多 >
编程相关推荐