【发布时间】:2015-11-01 13:02:33
【问题描述】:
我试图弄清楚如何正确地对字符串列表进行注释或键入提示。例如,如果我有这样的功能:
def send_email(self, from_address: str, to_addresses: list[str]):
pass
to_addresses 应该是一个字符串列表。但是当我尝试使用该注释时,我的 Python 3.4.3 解释器中出现以下错误:
TypeError: 'type' object is not subscriptable
我很肯定 list[str] 会导致问题,因为如果我将其更改为 str,错误就会消失,但这并不能正确反映我对参数的意图。
【问题讨论】:
-
字符串列表?如果它是一个 unicode 对象列表,或者一个从字符串派生的类呢?
-
我想提示一个原始 str 类型的列表。如果是其中之一,我将无法处理。
-
很遗憾,无法检查。您要问的实际上是遍历列表中的所有对象并验证它们是否为
str。工作量太大了。 python 是鸭子类型的,因此您通常不应该依赖对象的实际类型。是的,我承认这有点荒谬,但如果你不喜欢它,你应该使用一些带有类型系统的语言。 -
我不是要求对其进行检查,我只是真的要求对其进行适当的提示。我知道在 3.4 中没有静态类型或类型检查......我只想正确注释它。
-
然后写入文档字符串。
标签: python