Вы знаете поговорку: «Вы знаете, что происходит, когда вы предполагаете».:-)
Они официально не документируют этот материал, потому что могут решить изменить его в будущем.Любая неофициальная документация, которую вы можете найти, просто документирует текущее поведение одной реализации Python, и если полагаться на нее, ваш код будет очень и очень хрупким.
Когда есть официальная документация о специальных методах, это имеетопишите поведение интерпретатора по отношению к вашим собственным классам, например, используйте __len__()
, когда __nonzero__()
не реализован, или вам нужно только __lt()__
для сортировки.
Так как Python использует типизацию по типу утки, обычнона самом деле не нужно наследовать от встроенного класса, чтобы ваш собственный класс действовал как один.Таким образом, вы могли бы пересмотреть, действительно ли подкласс dict
действительно то, что вы хотите сделать.Вы можете выбрать другой класс, например что-то из модуля collections
, или инкапсулировать, а не наследовать.(Класс UserString
использует инкапсуляцию.) Или просто начните с нуля.