Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 294 – Typennamen im types-Modul

Autor:
Oren Tirosh <oren at hishome.net>
Status:
Abgelehnt
Typ:
Standards Track
Erstellt:
19-Jun-2002
Python-Version:
2.5
Post-History:


Inhaltsverzeichnis

Zusammenfassung

Dieses PEP schlägt vor, dass Symbole, die dem Typnamen entsprechen, für alle grundlegenden Python-Typen im types-Modul zum types-Modul hinzugefügt werden.

types.IntegerType -> types.int
types.FunctionType -> types.function
types.TracebackType -> types.traceback
 ...

Die langen, großgeschriebenen Namen im types-Modul werden als veraltet eingestuft.

Mit dieser Änderung kann das types-Modul als Ersatz für das new-Modul dienen. Das new-Modul wird als veraltet eingestuft und in PEP 4 aufgeführt.

Bekanntmachung

Ein zentralisiertes Repository von Typennamen war ein Fehler. Weder das „types“- noch das „new“-Modul sollten in Python 3.0 übernommen werden.

In der Zwischenzeit macht es keinen Sinn, die vorgeschlagenen Aktualisierungen an den Modulen vorzunehmen. Dies würde zu Störungen ohne jeglichen kompensierenden Nutzen führen.

Stattdessen kann das Problem, dass einige interne Typen (Frames, Funktionen usw.) außerhalb dieser Module nirgendwo leben, entweder durch Hinzufügen zu __builtin__ oder sys behoben werden. Dies wird einen reibungsloseren Übergang zu Python 3.0 ermöglichen.

Begründung

Die Verwendung von zwei Namenssätzen für dieselben Objekte ist redundant und verwirrend.

In Python-Versionen vor 2.2 wurden die Symbole, die vielen Typennamen entsprechen, von den Factory-Funktionen für diese Typen übernommen. Jetzt sind alle grundlegenden Typen mit ihren Factory-Funktionen vereinheitlicht, und daher können die Typennamen konsistent verwendet werden, um auf das Typobjekt zu verweisen.

Die meisten Typen sind entweder als eingebaute Typen oder im new-Modul zugänglich, aber einige Typen wie Traceback und Generator sind nur über das types-Modul unter Namen zugänglich, die nicht dem Typnamen entsprechen. Dieses PEP bietet eine einheitliche Möglichkeit, auf alle grundlegenden Typen unter einem einzigen Satz von Namen zuzugreifen.

Spezifikation

Das types-Modul muss den folgenden Test bestehen

import types
for t in vars(types).values():
    if type(t) is type:
assert getattr(types, t.__name__) is t

Die Typen „class“, „instance method“ und „dict-proxy“ wurden bereits in die gültigen Python-Bezeichner „classobj“, „instancemethod“ und „dictproxy“ umbenannt, was dies ermöglicht.

Abwärtskompatibilität

Aufgrund ihrer weit verbreiteten Verwendung ist es nicht geplant, die langen Namen in einer zukünftigen Version tatsächlich aus dem types-Modul zu entfernen. Die langen Namen sollten jedoch in Dokumentationen und Bibliotheksquellen geändert werden, um ihre Verwendung in neuem Code zu entmutigen.

Referenzimplementierung

Eine Referenzimplementierung ist in Issue #569328 verfügbar.


Quelle: https://github.com/python/peps/blob/main/peps/pep-0294.rst

Zuletzt geändert: 2025-02-01 08:55:40 GMT