您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Python中正确实现映射协议?

如何在Python中正确实现映射协议?

collections.abc模块定义了象接口MappingSequence等。

通过从该模块中的抽象基类继承,您可以获得某些方法认实现。因此,要被视为a Mapping,您的类定义应如下所示:

class MyMapping(collections.abc.Mapping):
    def __getitem__(self, item)
    def __iter__(self)
    def __len__(self)

继承自Mapping会为您提供大部分dict有用方法的“免费”实现:

如果这些方法实现对自定义数据结构的效率不高,则始终可以使用自己的版本覆盖它们。

被认为是MutableMapping,您的类的界面应如下所示:

class MyMutableMapping(collections.abc.MutableMapping):
    def __getitem__(self, key)
    def __setitem__(self, key, item)
    def __delitem__(self, key)
    def __iter__(self)
    def __len__(self)

继承自MutableMapping会为您免费提供所有Mapping方法的定义,以及:

如果您要从头开始“滚动自己的脚本”,并且不想使用抽象基类,那么如果希望您的类可以严格地用Liskov替代,则应该尝试定义 所有 上述方法dict

python 2022/1/1 18:48:32 有477人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶