Есть ли «интеллектуальная карта», UML-диаграмма, графика или какой-нибудь надежный справочник по различным типам Python и магическим методам, которые они должны реализовать?
Я использую Python 3.8. Документы документы модели данных и встроенные типы документов очень краткие, и это помогло бы мне увидеть высокоуровневый обзор различных протоколов, которые существуют для разных типов в python (я «научился» (читал?), Что, например, для реализации " "неизменяемый" объект, вы должны придерживаться Immutable Protocol в python, что означает, что вы должны реализовать __len__ и __getitem__. Чтобы сделать его "подобным изменяемым", вы должны дополнительно добавить __setitem__ и __delitem__).
Я не вижу (насколько я искал) слово «протокол», используемое в документации python, и наиболее близкое хорошее описание, похоже, исходит из модуля коллекции абстрактных базовых классов. Однако, как новичок, я не уверен, является ли 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.





