我想知道如何将类型提示(用于 PyCharm IDE 代码完成支持)添加到方法
def links(self) -> List[str]
,我将其猴子修补到 现有模块的 类:
def issue_links(self) -> List[str]:
links = []
# ...
return links
Issue
类from jira.resources import Issue
# {...} my defined function code is somewhere here
Issue.links = issue_links
现在我遇到的问题是,当我在
Issue
对象上调用此方法时,PyCharm 显然无法识别该方法。我尝试遵循 PEP 484 存根文件 并使用 typing
文件中的
.pyi
模块来让 IDE 找到我的猴子修补函数的定义。
from typing import List
class Issue:
def links(self) -> List[str]: ...
但是,这是行不通的。我的假设是文件结构在某种程度上不正确:
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
或者如果您真的只想使用定义接口:
from jira.resources import Issue as JiraIssue
from typing import List, Protocol
class WithLinks():
def links(self) -> List[str]: ...
class Issue(JiraIssue, WithLinks):
pass