A. *_*dry 4 python datamodel magic-methods
是否有“思维导图”、UML 图、图形或一些针对不同 Python 类型及其必须实现的神奇方法的可靠参考?
\n我正在使用 Python 3.8。数据模型文档和内置类型文档非常简洁,它将帮助我了解 python 中不同类型存在的不同协议的高级概述(我已经“学习”(阅读?) ,例如,要实现“类似不可变”的对象,您必须遵守Immutable ProtocolPython中的 ,这意味着您必须实现__len__和__getitem__。要使其“类似可变”,您必须进一步添加__setitem__和__delitem__)。
我没有看到(据我搜索到的)Python 文档中使用了“协议”一词,并且最接近的良好描述似乎来自集合抽象基类模块。然而,作为一个新手,我不确定是否collections.abc完全是别的东西,或者那里提供的信息是否适用于 python 内置类型(即list、tuple、dict等;特别是因为collections.abc文档指出它“提供[es]替代方案)到 Python\xe2\x80\x99s 通用内置容器、字典、列表、集合和元组”,第二个是因为我不会想到去collections Python\xe2\x80\x99s 通用内置容器、字典、列表、集合和元组”,其次是因为如果我想了解 python 中的默认内置函数,模块语言本身)。
有人有可靠的资源吗?如果信息采用某种继承关系格式,这样信息就不会重复,这将很有帮助。例如,在我上面的例子中,与其说一个mutable-like对象实现了__len__、__getitem__、__setitem__和__delitem__,不如说如果它被“分块”并且信息类似于“一个mutable-like对象继承immutable-like并添加__setitem__,和__delitem__。
有什么想法吗?我认为这对新手来说是一个巨大的困惑源,许多错误都是由于对 python 数据类型的误解而导致的。
\n从术语表中构建了很多内容,这是我目前能做的最好的事情。我希望这个问题可以通过其他人的多个答案来扩展。
numbers):支持数字运算的不可变值[]):通过索引访问的对象引用的可变序列{key: value}):通过键访问的对象引用的可变映射()):通过索引访问的对象引用的不可变序列{}):唯一且不可变对象的可变无序集合__eq__()和__lt__()、__le__()、__gt__()、__ge__()。对于遏制检查(即与 一起使用in),实现__contains__()或是一个Iterable__iter__()(返回对象)和__next__()(从容器返回下一个项目;StopIteration完成时引发)__iter__()(产生对象)和__next__()(从容器中产生下一个项目;StopIteration完成时引发)__hash__()__enter__()and __exit__()(在语句中使用with)__get__()、__set__()和/或__delete__()+是串联*是重复22注意:序列中重复的项目不会被复制,而是会被多次引用。要制作唯一的副本,请使用列表理解或生成器表达式。
built-in是所有lower case对象(例如list、tuple、str等)Sequences是IterablesSets也Dicitionaries支持理解Bitwise Operations可用于Sets实现集合论运算(即并集、交集、对称差集等)容器/平面序列
list,
tuple, collections.deque)str, bytes,
bytearray, memoryview, array.array)可变/不可变序列
list , bytearray, array.array, collections.deque,memoryviewtuple , str,bytes另一个很好的参考是Luciano Ramalho 的 Fluent Python
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |