【发布时间】:2016-09-27 23:31:25
【问题描述】:
我的问题不同,因为我使用类型提示出错了。
Example 是我自己的班级。但我想这不太重要,因为 IDE 抱怨 list 类型没有定义 __getitem__ 方法,这是不正确的。我想知道这是一个错误还是我以错误的方式使用它。
【问题讨论】:
-
这能回答你的问题吗? Type hinting a list of a specified type
我的问题不同,因为我使用类型提示出错了。
Example 是我自己的班级。但我想这不太重要,因为 IDE 抱怨 list 类型没有定义 __getitem__ 方法,这是不正确的。我想知道这是一个错误还是我以错误的方式使用它。
【问题讨论】:
根据official PEP 表示你应该使用typing.List 的对象列表,而不是list 内置。
from typing import List
class Something:
pass
def f(seq: List[Something]): # no warning
for o in seq:
print(o)
2021 年 1 月更新:
请注意,内置泛型是在 Python 3.9 中实现的,如 PEP585 中所述。
【讨论】:
list[float]! docs.python.org/3/library/typing.html
list[float] 开始在 Python 3.9 中得到支持。
Łukasz 解释了如何更正您的代码。我将解释为什么错误消息说明了它的作用。
list 定义了__getitem__,是的,但这不是错误消息所抱怨的。错误消息是说type 本身,它是list type's 类型,不支持__getitem__。要使list[whatever] 有效,type 必须定义 __getitem__ 方法,而不是 list。
【讨论】: