collections.abc.Collection 是否具有唯一性属性,如 Set?

Does collections.abc.Collection have a uniqueness property, like Set?

提问人:Intrastellar Explorer 提问时间:11/3/2023 更新时间:11/3/2023 访问量:112

问:

https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes,我很清楚 a 是 .一个有用的属性是 uniqueness 属性(它不包含重复的元素)。collections.abc.Setcollections.abc.CollectionSet

但是,我想弄清楚的是,是否具有唯一性属性?Collection

换句话说,a内部是否有可能包含重复值?Collection

数据结构 python-typing

评论

4赞 MisterMiyagi 11/3/2023
序列(即列表、元组等)也是一个集合,所以“不,它没有唯一性保证”。
5赞 dROOOze 11/3/2023
我不认为任何东西都具有任何属性(如您所描述的),因为它们没有任何实现。任何事情都可以满足 a 只要它已经为类及其祖先实现了具体的方法,如列中所列。要使某些东西具有独特的元素,您必须在容器初始化和突变时实现它。您可以轻松地创建一个没有唯一元素的子类,并强制另一种集合仅具有唯一元素。collections.abccollections.abc.SetAbstract MethodsSet
2赞 Barmar 11/3/2023
这些类在其他语言中可能被称为“接口”。
0赞 joel 11/3/2023
@dROOOze,尽管文档确实说“只读和可变集的 ABC”,所以我希望具有唯一性。没有独特元素的集合有意义吗?
2赞 juanpa.arrivillaga 11/3/2023
@joel,它们被称为多集。多集绝对可以满足collections.abc.Set

答:

0赞 Chukwujiobi Canon 11/3/2023 #1

但是,我想弄清楚的是,Collection 是否具有唯一性属性?

不,它没有。它声明的只是__contains____iter____len__

实际上继承了其他功能,然后添加其他功能作为 Mixin 方法。
collections.abc.Setcollections.abc.Collection

在 SO 上查看 mixin 方法