Python的collections.abc模块提供了Sequence
和MutableSequence
抽象基类(ABC),它们包括str
、bytes
、bytearray
和预期的类似类型
collections.abc
还提供了一个ByteString
ABC,它包括bytes
、bytearray
和可能类似的类型。但是它没有为字符串或代码点(如str
)提供ABC(这样的ABC可能被命名为String
、CharString
或CodepointString
。)为什么它提供前者而不提供后者(换句话说,什么是需要前者而不是后者的预期用例?)
就像在中一样,子类型是isinstance()
ABC
添加^{} 是为了让您能够测试出现在3.x文档中的“类字节类型”,而无需编写
(bytes, bytearray)
事实上,它的docstring只是“这统一了字节和字节数组”
对Unicode字符串没有类似的需求,因为
str
是唯一这样的类型;没有什么可以统一的您可以单击文档顶部的源代码链接,找到
ByteString
,然后git blame
从GitHub GUI中直接找到the commit that added it。签入注释为:如果你真的想深入挖掘,可能会在2007年11月21日附近进一步讨论b.p.o.或python-dev或python-ideas邮件列表档案。但我怀疑这里是否还有更多的兴趣,因为这里真的没有什么可讨论的
注意^{} 实际上确实有一个类型^{} ,它被记录为:
正如文档中明确指出的那样,添加它不是为了在同一种语言中统一多个Unicode字符串类型,而是为了在静态类型检查时统一Python 2
unicode
和Python 3str
在运行时,如果您想要这个,您几乎肯定需要实际的} 的东西
str
或unicode
构造函数,因此您可以使用类似^{相关问题 更多 >
编程相关推荐