2017-04-15 1 views
1

Begann ein Python-Projekt, schrieb einige hundert Zeilen Code, erstellte eine Handvoll Klassen, bekam sofortige Befriedigung, alles funktionierte gut.Wie behalten Sie den Überblick über Python-Klassen? Wie kann man Datentypen ableiten?

Wenige Monate später bin ich hoffnungslos verloren. Schlimmer als Spaghetti: Der Code sieht jetzt wie eine chaotische Sammlung von hundert Klassenmitgliedsfunktionen aus. Die meisten dieser Funktionen sind nur zwei bis zehn Zeilen lang; ihre Funktionsweise und ihr Zweck sind vollkommen klar - außer dass ich keine Ahnung habe, was die Datentypen der Funktionsargumente, der Rückgabewerte und der beteiligten Klassenmitgliedsvariablen sind. Daher kann ich mir nicht vorstellen, wie meine Klassen miteinander in Beziehung stehen.

Wie geht man in einer solchen Situation vor? Wie erhält man einen Überblick auf hoher Ebene, wie er von .h-Headern in C++ bereitgestellt wird? Wie fügt man diese Informationen in die Quelldatei ein, damit ich das nächste Mal diese Recherche nicht wiederholen muss?

+0

Die Verwendung von [Docstrings] (https://www.python.org/dev/peps/pep-0257/), wo angemessen, geht einen langen Weg. – spectras

Antwort

0

Mit docstrings wo angemessen geht ein langer Weg.

Beispiel aus dem PEP zitiert:

def complex(real=0.0, imag=0.0): 
    """Form a complex number. 

    Keyword arguments: 
    real -- the real part (default 0.0) 
    imag -- the imaginary part (default 0.0) 
    """ 
    if imag == 0.0 and real == 0.0: 
     return complex_zero 
    ... 

Solche Saiten hinzugefügt bekommen als __doc__ spezielles Attribut auf die Funktion/Methode, die Sie von Python zugreifen können. Direkt oder mit dem pydoc-Modul. Als Bonus ist eine solche Dokumentation direkt von der Python-Konsole aus verfügbar, unter Verwendung von help(something). Sie sollten auch in sphinx-doc schauen, welches das Werkzeug ist, um Python selbst zu dokumentieren. Es ist nicht in-source, aber es ist für die Dokumentation von Python-Code zugeschnitten und insgesamt ziemlich praktisch.

Was Ihre Bedenken bezüglich der tatsächlichen Typen anbelangt, benennen Sie normalerweise keine spezifischen Typen. Sie sind nicht wichtig. Was zählt, ist, was Sie damit tun können, da Python-Code normalerweise duck typing verwendet. Das heißt: es ist Ihnen egal, was Ihr Argument ist, solange Sie seine foo-Methode aufrufen und auf sein bar-Attribut zugreifen können, und sie verhalten sich wie erwartet.

+0

Ihr Rat, um ausführliche Docstrings Adressen Codierung Disziplin _ex ante_ verwenden. Meine Frage ist mehr darüber, wie man eine gegebene Unordnung _ex post_ analysiert. –

+0

Leider können Sie nicht viel tun, außer den Code mit dem Debugger auszuführen und ihm zu folgen. – spectras

Verwandte Themen