gpt4 book ai didi

python - 如何判断一个序列是否可变?

转载 作者:太空狗 更新时间:2023-10-29 17:31:02 24 4
gpt4 key购买 nike

对于内置的 Python 类型,list 是可变的,但 tuple 不是。对于其他序列,有没有办法判断它们是否可变?就像一个可变序列通常有 .pop().insert().extend() 成员函数?是否所有可变序列和不可变序列都继承自单独的内置类型,然后可以使用这些类型来区分它们?

最佳答案

您可以检查该类型是否是 collections.abc.MutableSequence 的子类抽象基类(或 Python 2 中的 collections.MutableSequence):

>>> issubclass(list, MutableSequence)
True
>>> issubclass(tuple, MutableSequence)
False

>>> isinstance([], MutableSequence)
True
>>> isinstance((), MutableSequence)
False

请注意,与某些 ABCs 不同(例如,CollectionIterable,它们为 issubclass/isinstance 提供了钩子(Hook))这个需要它的子类是显式注册,因此这可能不适用于所有序列类型。

但是,您可以使用 MutableSequence.register(MyType) 手动将类型注册为子类,只要实现了所需的抽象方法即可。

关于python - 如何判断一个序列是否可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43582363/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com