Wenn man in CPython 3.4 dir()
auf einige eingebaute Callables (Klassenkonstruktoren, Methoden usw.) ausführt, findet man heraus, dass viele von ihnen oft ein spezielles Attribut namens __text_signature__
haben, zum Beispiel:
Die Dokumentation dafür existiert jedoch nicht. Außerdem deutet das Googeln für den Attributnamen darauf hin, dass es auch ein anderes mögliches Spezialattribut __signature__
gibt, obwohl ich keine eingebauten Funktionen gefunden habe, die es haben würden.
Ich weiß, dass sie mit der Signatur des Funktionsarguments verwandt sind, aber nichts darüber hinaus, was bedeuten ihre Werte und was nützen sie?
Diese Attribute dienen dazu, Introspektion für in C-Code definierte Python-Objekte zu ermöglichen. Die C-API-Argument-Klinik stellt die Daten bereit, um das inspect
-Modul beim Erstellen von Signature
objects . Die Überprüfung der C-API-Funktionen wurde vorher nicht unterstützt.
Siehe die interne Funktion inspect._signature_fromstr()
zur Angabe des __text_signature__
Wert wird verwendet.
Momentan wird das __text_signature__
-Attribut aus dem internen Docstring-Set für Objekte in der C-API gefüllt; Für objectname(...)\n--\n\n
wird eine einfache Textsuche durchgeführt, wobei \n--\n\n
typisch für Attribute Clinic-generierte Dokumentationszeichenfolgen ist. Schauen Sie sich die type
Objekt-Slots an, wenn Sie welche finden möchten Beispiele. Oder Sie können sich die Modulquelle audioop
ansehen, um zu sehen, wie die Argument Clinic ist verwendet werden, um Signaturen zu definieren; Das Skript "Argument Clinic" wird beim Erstellen der Docstrings ausgeführt (in die zugehörige audioop.c.h
-Datei ).
Das __signature__
-Attribut, falls vorhanden, wäre ein inspect.Signature()
-Objekt; Anstatt eine Textversion bereitzustellen, kann eine C-API stattdessen eine vollständig analysierte Signature
-Instanz bereitstellen.
Tags und Links python python-3.4 python-internals signature