Почему коллекции.Callable предоставляет __содержит __(), __hash__(), __len__() и __call__()

#python #callable

#python #вызываемый

Вопрос:

Почему в документации говорится:

коллекции классов.Вызываемый

Азбука для классов, которые предоставляют соответственно методы contains(), hash(), len() и call() .

И не только __call__() ?

Какова роль __contains__() , __hash__() , __len__() для вызываемого объекта?

Например, нужно ли мне делать мои классы хэшируемыми?

Комментарии:

1. Обратите внимание на слово соответственно .

2. Я устал. Спасибо

Ответ №1:

Вы неправильно понимаете, что говорится в этом тексте. Документация охватывает четыре азбуки:

 class collections.Container
class collections.Hashable
class collections.Sized
class collections.Callable
  

Грамматическая конструкция соответственно в предложении ABCs для классов, которые предоставляют соответственно методы, присоединяет отдельный метод к каждому из четырех классов здесь, по порядку.

Итак Container , предоставляет __contains__() , Hashable покрывает __hash__() , Sized покрывает __len__() и Callable покрывает __call__() .

Другими словами, Callable предоставляет только __call__() метод, а не какой-либо из других 3 методов.