2015-04-20 14 views
7

Das Python collections.abc Modul enthält viele praktische ABCs zum Überprüfen verschiedener Objekteigenschaften, aber eines, das nicht zu diesem Objekt zu gehören scheint, ist Callable. Keine Standard-Sammlung ist aufrufbar, und PEP 3119 bietet keine Begründung oder gar erwähnen das Callable ABC, also warum ist es in diesem Paket statt woanders?Warum ist das Callable ABC in den Sammlungen ABC-Modul?

Kontext: Ich schreibe einen Python-> Java-Compiler zum Spaß, und ich wollte nur sehen, ob es irgendwelche Gründe für die Entscheidung gab, so dass ich diese Argumentation in meinem Code auflisten konnte.

+0

eine vernünftige Frage ... aber ich bin nicht sicher, es bezieht sich eigentlich auf Programmierung und Programmierung Probleme. so könnte es glatt werden –

+0

@JoranBeasley Ich werde dann in etwas Kontext werfen. –

+4

Wo sollte es stattdessen sein? Ein neues 'functools.abc'-Modul? Dort wäre es ziemlich einsam, oder? – Navith

Antwort

1

Das Modul stammt von PEP-3119 in der vorgeschlagen:

Specific ABCs für Container und Iteratoren, an das Sammelmodul hinzugefügt werden.

Aber seitdem entwickelte sich etwas mehr. Und jetzt erwähnt eine Modulbeschreibung nicht explizit Containers und Iteratoren. Es heißt:

Dieses Modul bietet abstrakte Basisklassen, die verwendet werden können, um zu testen, ob eine Klasse eine bestimmte Schnittstelle bereitstellt; zum Beispiel, ob es hashbar ist oder ob es sich um ein Mapping handelt.

Ich glaube, es ist ein collections Submodul nur, weil es ein Teil davon in der Vergangenheit war:

Neu in Version 3.3: Früher dieses Modul war ein Teil der Sammlungen Modul.