【发布时间】:2021-06-26 16:01:12
【问题描述】:
对于不同的 python 类型和它们必须实现的魔法方法,是否有“思维导图”、UML 图、图形或一些可靠的参考?
我使用的是 Python 3.8。 data model docs 和 built-in types docs 文档非常简洁,它可以帮助我看到 Python 中不同类型存在的不同协议的高级概述(我已经“学习”(读过?),例如,要实现“类不可变”对象,必须遵守python中的Immutable Protocol,即必须实现__len__和__getitem__。要使其“类可变”,必须进一步添加__setitem__和__delitem__)。
我没有看到(据我搜索)python 文档中使用的“协议”一词,最接近的描述似乎来自collections abstract base classes 模块。但是,作为一个新手,我不确定collections.abc 是否完全是另一回事,或者那里提供的信息是否适用于python 内置类型(即list、tuple、dict 等;特别是因为collections.abc 文档声明它“提供[es] Python 的通用内置容器、dict、list、set 和 tuple 的替代品”,其次是因为如果我不考虑使用collections 模块想了解python语言本身的默认内置函数)。
有人有可靠的资源吗?如果信息采用某种继承关系格式,这样信息就不会重复,那将很有帮助。例如,在我上面的示例中,与其说mutable-like 对象实现了__len__、__getitem__、__setitem__ 和__delitem__,不如说如果它被“分块”,我的小脑袋更容易掌握" 并且信息类似于 "mutable-like 对象继承自 immutable-like 并添加 __setitem__ 和 __delitem__。
有什么想法吗?我认为这对新手来说是一个巨大的困惑来源,许多错误是由于对 python 中的数据类型的误解造成的。
【问题讨论】:
标签: python magic-methods datamodel