Chr*_*raf 14 python monkeypatching type-hinting pycharm pyi
我想知道如何将类型提示(用于 PyCharm IDE 代码完成支持)添加到def links(self) -> List[str]我通过猴子修补到现有模块的类的方法:
def issue_links(self) -> List[str]:
links = []
# ...
return links
Run Code Online (Sandbox Code Playgroud)
Issuepython-jira 类from jira.resources import Issue
# {...} my defined function code is somewhere here
Issue.links = issue_links
Run Code Online (Sandbox Code Playgroud)
现在我遇到的问题是,当我在Issue对象上调用该方法时,PyCharm 显然无法识别该方法。我尝试遵循PEP 484 存根文件并使用文件typing中的模块.pyi来让 IDE 找到我的猴子修补函数的定义。
from typing import List
class Issue:
def links(self) -> List[str]: ...
Run Code Online (Sandbox Code Playgroud)
然而,这是行不通的。我的假设是文件结构在某种程度上不正确:
jira-python module>> 站点包(使用pip install jira)下载
myFile.py>> /temp/myFile.py
Issue.pyi>> /temp/jira/resources/Issue.pyi 文件夹
也许使用存根文件并不是您想要实现的最佳方法 - 因为在这种情况下,您必须复制Issue存根中的完整接口,正如评论中已经讨论的那样。
为什么不使用继承来达到这个目的呢?
from jira.resources import Issue as JiraIssue
from typing import List
class Issue(JiraIssue):
def links(self) -> List[str]:
# your function code here
Run Code Online (Sandbox Code Playgroud)
或者,如果您真的只想定义接口:
from jira.resources import Issue as JiraIssue
from typing import List, Protocol
class WithLinks():
def links(self) -> List[str]: ...
class Issue(JiraIssue, WithLinks):
pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2484 次 |
| 最近记录: |