2015-04-20 4 views
7

Модуль Python collections.abc содержит много удобных ABC для проверки различных объектов объектов, но тот, который, по-видимому, не принадлежит, является Callable. Никакая стандартная коллекция не может быть вызвана, и PEP 3119 не дает никаких аргументов или даже упоминает Callable ABC, так почему же это в этом пакете, а не где-то еще?Почему Callable ABC в сборнике ABC-модуля?

Контекст: Я пишу компилятор Python-> Java для развлечения, и я просто хотел узнать, есть ли какие-либо аргументы в пользу решения, поэтому я мог бы перечислить эти рассуждения в своем коде.

+0

разумный вопрос ... однако я не уверен, что он действительно связан с проблемами программирования и программирования. поэтому он может получить smooshed –

+0

@JoranBeasley Тогда я буду использовать какой-то контекст. –

+4

Где это должно быть? Новый модуль 'functools.abc'? Было бы довольно одиноко, не так ли? – Navith

ответ

1

Модуль берет свое начало от ПЭП-3119, который предлагает:

Конкретные ABCs для контейнеров и итераторов, которые будут добавлены к модулю коллекций.

Но с тех пор оно превратилось в нечто большее. И теперь в описании модуля не упоминаются ящики и итераторы. В нем говорится:

Этот модуль предоставляет абстрактные базовые классы, которые могут использоваться для проверки того, обеспечивает ли класс определенный интерфейс; например, является ли оно хешируемым или является ли оно отображением.

Я считаю, что это collections подмодуль только потому, что это было частью его в прошлом:

Новое в версии 3.3: Раньше этот модуль был частью модуля коллекций.