序列与可变序列
Sequence vs. MutableSequence
我一直在使用 Sequence
in type hints for sequences including mutable list
s. Now I've just discovered that there is also MutableSequence
。据我所知,Sequence
是 MutableSequence
的超类,即 Sequence
包括像 list
这样的可变变量和像 tuple
这样的不可变变量,而 MutableSequence
只包括前者。
两个问题:
- 这是正确的吗? (我很确定是这样,但我还没有找到任何明确的声明。)
- 如果是,是否存在
MutableSequence
的不变等价物,包括 tuple
和 str
,但不包括 list
?
是。
否 — 在 Python 中,您只能根据 [=20= 定义接口(其中 Sequence
和 MutableSequence
是两个示例) ]存在 某些methods/behaviours;您不能根据某些 methods/behaviours.
的 缺失 来定义接口
我建议阅读 source code for collections.abc
,我个人认为它比文档更有启发性。
我一直在使用 Sequence
in type hints for sequences including mutable list
s. Now I've just discovered that there is also MutableSequence
。据我所知,Sequence
是 MutableSequence
的超类,即 Sequence
包括像 list
这样的可变变量和像 tuple
这样的不可变变量,而 MutableSequence
只包括前者。
两个问题:
- 这是正确的吗? (我很确定是这样,但我还没有找到任何明确的声明。)
- 如果是,是否存在
MutableSequence
的不变等价物,包括tuple
和str
,但不包括list
?
是。
否 — 在 Python 中,您只能根据 [=20= 定义接口(其中
的 缺失 来定义接口Sequence
和MutableSequence
是两个示例) ]存在 某些methods/behaviours;您不能根据某些 methods/behaviours.
我建议阅读 source code for collections.abc
,我个人认为它比文档更有启发性。