使用 for 迭代 python 列表时如何指定类型/类名

2024-03-11

我知道 python 是动态类型语言,但想知道这是否可能,假设我有一个名为 people 的类 Person 的列表

people = []

people.append(Person('james'))

for p in people :
    p.name = p.name + '_'

有没有办法指定 p 的类型,如下所示:

for p:Person in people :
    p.name = p.name + '_'

我这样做的原因是因为 p 似乎被 IDE 视为类型 any/object,当我输入时,智能感知没有识别任何属性p.我正在使用 vsCode 和 python 插件

列表推导式可以帮助我解决这个问题还是这只是 IDE 未检测类型的问题? -https://stackoverflow.com/a/30129220/17205969 https://stackoverflow.com/a/30129220/17205969


您可以通过在声明列表时向列表添加类型注释来实现此目的,例如:

from typing import List


class Person:
    def __init__(self, name: str) -> None:
        self.name = name


people: List[Person] = []

people.append(Person("james"))

for p in people:
    p.name = p.name + "_"

In VS Code I can see the name property in the IntelliSense autocomplete: IntelliSense on name property

The loop variable, p, is also recognized as being of type Person: Loop variable p has type Person

如果您通过列表理解内联列表声明,则可以推断列表的泛型类型,并且您可以完全删除类型提示:

people = [Person("james") for i in range(10)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 for 迭代 python 列表时如何指定类型/类名 的相关文章

随机推荐