[PYTHON] Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?

Ich habe von einem PR erfahren, dass das Attribut namedtuple automatisch auf die Dokumentzeichenfolge "Alias für Feldnummer xx" gesetzt wird.

$ python
Python 3.8.1 (default, Feb 13 2020, 13:34:23)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import namedtuple
>>>
>>> Coordinate = namedtuple('Coordinate', 'X Y')
>>> Coordinate.__doc__
'Coordinate(X, Y)'
>>> Coordinate.X.__doc__
'Alias for field number 0'
>>> Coordinate.Y.__doc__
'Alias for field number 1'

Wenn Sie diese Klasse mit Sphinx (Autodoc) verarbeiten und ein Dokument generieren, wird das folgende Dokument generiert. スクリーンショット 2020-03-15 11.40.30.png

Obwohl die Informationsmenge gering ist, habe ich ein Dokument erstellt, das Papier verwendet.

Zurückblicken

Ansatz zum Löschen der Dokumentzeichenfolge

Die Problemumgehung für dieses Problem ist der Code, der in Entfernen von namedtuple-Dokumentzeichenfolgen für Sphinx eingeführt wurde. Wenn Sie das Attribut namedtuple finden, löschen Sie es. Indem Sie dies einbeziehen, können Sie redundante Dokumente vereinfachen [^ 1].

[^ 1]: Andererseits hat dieser Ansatz den Nachteil, dass die Zuordnung zwischen der Position des benannten Tupels und dem Attributnamen schwer zu verstehen ist, da Autodoc die Attribute alphabetisch sortiert, wenn nichts angegeben ist. Ich bin ein wenig verwirrt darüber, was ich mit Sphinx selbst machen soll.

Ein Ansatz zum Schreiben von Attributdokumentationen mit docstring

In So schreiben Sie eine Dokumentzeichenfolge zum Erstellen eines benannten Tupeldokuments mit Sphinx wird der Ansatz zum Schreiben des Dokuments jedes Attributs mit der Dokumentzeichenfolge der generierten Klasse übernommen. Eingeführt.

class NamedTupleWithDocstring2(namedtuple("NamedTuple", "aaa bbb ccc")):
    """
    hogehoge

    .. py:attribute:: aaa

        Description of the ``aaa``.

    .. py:attribute:: bbb

        Description of the ``bbb``.

    .. py:attribute:: ccc

        Description of the ``ccc``.
    """

Ich sehe, Sie können in diesem Fall jede Beschreibung einfügen.

Wie schreibst du jetzt?

Sie können das Dokument mit docstring auf verschiedene Arten frei schreiben, aber der Code ist redundant. Wenn Sie Python 3.6 oder höher und Sphinx 2.4 zur Verfügung haben, ist das Schreiben etwas einfacher.

Mithilfe der in Python 3.6 eingeführten Variablenanmerkungen können namedtuple und seine Dokumentation wie folgt geschrieben werden:

from typing import NamedTuple

class Coordinate(NamedTuple):
    """A 2-dimension coordinate."""

    X: float  #: the coordinate on X-axis
    Y: float  #: the coordinate on Y-axis

Wenn Sie Sphinx 2.4 verwenden, wird der an diese Variablenanmerkung angehängte Kommentar "#:" als Dokumentzeichenfolge interpretiert. Wenn Sie also den obigen Code mit Sphinx verarbeiten, wird er wie folgt konvertiert. スクリーンショット 2020-03-15 12.02.54.png

Streben wir nach intelligentem Code und intelligenten Dokumenten mit neuen Funktionen.

Recommended Posts

Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So schreiben Sie eine Dokumentzeichenfolge, um ein benanntes Tupeldokument mit Sphinx zu erstellen
Wie man nüchtern mit Pandas schreibt
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
Qiita (1) Wie schreibe ich einen Codenamen?
So schreiben Sie Python-Dokumentkommentare (Docstrings)
Wie bekomme ich Stacktrace in Python?
Wie schreibe ich diesen Prozess in Perl?
Wie schreibe ich Ruby to_s in Python
So löschen Sie einen Taple in einer Liste (Python)
So erstellen Sie eine JSON-Datei in Python
So implementieren Sie eine Verlaufsauswahl in Houdini
So schreiben Sie einen ShellScript Bash für Anweisung
So benachrichtigen Sie Discord-Kanäle in Python
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
So zählen Sie Zahlen in einem bestimmten Bereich
[Go] So schreiben oder rufen Sie eine Funktion auf
So lesen Sie Dateien in verschiedenen Verzeichnissen
Wie man eine öffentliche Funktion in Pytest verspottet
So schreiben Sie eine ShellScript-Bash-Case-Anweisung
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
20. Offline-Echtzeit So schreiben Sie Probleme in Python
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So schreiben Sie eine GUI mit dem Befehl maya
So schreiben Sie in Python die Verkettung von Zeichenfolgen in mehrere Zeilen
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
[Python] So erweitern Sie Variablen in einer Zeichenfolge
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
So zeigen Sie DataFrame als Tabelle in Markdown an
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
So führen Sie einen Befehl mit einem Unterprozess in Python aus
So verweisen Sie auf statische Dateien in einem Django-Projekt
[Linux] Wie Sie Ihre IP in eine Variable einfügen
XPath-Grundlagen (2) - So schreiben Sie XPath
So rufen Sie eine Funktion auf
Wie man ein Terminal hackt
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So importieren Sie NoteBook als Modul in Jupyter (IPython)
Eine Geschichte darüber, wie man einen relativen Pfad in Python angibt.
Es ist schwer, einen sehr einfachen Algorithmus in PHP zu schreiben
Verwendung der Methode __call__ in der Python-Klasse
So importieren Sie Dateien in Python an eine beliebige Stelle
[Python] Wie schreibe ich eine if-Anweisung in einen Satz?
So implementieren Sie vorläufig einen Fortschrittsbalken in einer Skriptsprache
So definieren Sie mehrere Variablen in einer Python for-Anweisung
Hinweise zum Laden einer virtuellen Umgebung mit PyCharm
Ich habe versucht "Wie man eine Methode in Python dekoriert"
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So schreiben Sie einen Test für die Verarbeitung mit BigQuery
So überprüfen Sie, ob ein Wert in einem Aufzählungstyp vorhanden ist
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Ich werde nie vergessen, wie man ein Shell-Skript schreibt, nicht vergessen! !!
So erhalten Sie eine Liste der integrierten Ausnahmen für Python