Python中如何声明返回对象数组的函数?(.Net转Python入门)
Python中给返回对象列表的函数添加IDE类型提示
刚从.NET转Python入门,类型提示这块确实会有不一样的地方,我来帮你搞定怎么让PyCharm这类IDE识别到你的方法返回的是myObj类型的列表~
首先先纠正你原代码里的一个小错误:在myOwner的__init__方法中,self.myListofObj的类型标注写错了,你写成了myObj,但实际这是一个列表,正确的标注应该是list[myObj](Python3.9+)或者List[myObj](Python3.8及以下)。
接下来就是给getMyListOfObj方法添加返回类型提示,分两种场景:
场景1:使用Python 3.9及以上版本
Python3.9开始支持直接用内置的list加方括号来标注泛型类型,不需要额外导入模块,直接这样写:
class myObj: def __init__(self): self.myValue1: int = 1 self.myValue2: float = 2.1 class myOwner: def __init__(self): # 修正列表的类型标注 self.myListofObj: list[myObj] = [] # 标注返回值为myObj类型的列表 def getMyListOfObj(self) -> list[myObj]: return self.myListofObj
场景2:使用Python 3.8及以下版本
这时候需要从typing模块导入List泛型类,然后用List[myObj]来标注:
from typing import List class myObj: def __init__(self): self.myValue1: int = 1 self.myValue2: float = 2.1 class myOwner: def __init__(self): self.myListofObj: List[myObj] = [] def getMyListOfObj(self) -> List[myObj]: return self.myListofObj
这样标注之后,PyCharm就能准确识别到getMyListOfObj返回的是myObj实例组成的列表,当你调用这个方法并遍历列表元素时,IDE会自动提示myObj的属性(比如myValue1、myValue2),和你在.NET里用List<T>时的体验类似~
内容的提问来源于stack exchange,提问作者jlee88my
相关产品推荐
相关产品推荐

