2012-04-04 7 views
11

PEP 257 says:Wo finde ich geeignete Beispiele für die Docstring-Konventionen PEP 257?

eine leere Zeile einfügen vor und nach allen Docstrings (einzeilige oder mehrzeiligen), die eine Klasse Dokument - allgemein gesprochen, wird die der Klassenmethoden voneinander durch eine einzelne getrennte Leerzeile und die Docstring von dem ersten Verfahren durch eine Leerzeile versetzt werden muss; für Symmetrie, legte eine Leerzeile zwischen den Klasse-Header und dem docstring.

Aber ich kann anscheinend keinen Code finden, der das tatsächlich implementiert.

ich eingecheckt haben mehrere Standardmodule mit Python ausgeliefert 2.6, suchten auch speziell für diejenigen, wo Guido Name erwähnt wird. Aber auch der Code des rietveld Code-Review-Tool nicht entspricht IMHO nicht (siehe zB http://code.google.com/p/rietveld/source/browse/upload.py):

class CondensedHelpFormatter(optparse.IndentedHelpFormatter): 
    """Frees more horizontal space by removing indentation from group 
     options and collapsing arguments between short and long, e.g. 
     '-o ARG, --opt=ARG' to -o --opt ARG""" 

    def format_heading(self, heading): 
    return "%s:\n" % heading 

Diese docstring mehrzeilige nicht über eine Leerzeile in vor und die Leerzeile nach außerhalb der Schließung Anführungszeichen .

Diese Klasse von /usr/lib64/python2.6/site.py nicht eine Leerzeile vor, sondern eine Leerzeile vor und nach der Schließung Anführungszeichen hat.

class _Helper(object): 
    """Define the built-in 'help'. 
    This is a wrapper around pydoc.help (with a twist). 

    """ 

    def __repr__(self): 

Gibt es Beispiele zur Demonstration von PEP 257?

Vielen Dank im Voraus

+1

"Liste der"/"Umfrage" Fragen sind nicht Thema für Stack Overflow. Außerdem sehe ich nicht, wie sich dies auf ein echtes Problem bezieht, das du lösen willst. – agf

+1

Ich weiß Ihre Recherchen zu schätzen, und sicherlich konnten Beispiele des offiziellen Docstring-Formats gefunden werden, aber es ist nicht wirklich klar, welchen Nutzen das hätte. Es gibt Beispiele für falsche Docstrings, von denen einige vielleicht sogar von Guido geschrieben wurden. Wenn Sie die richtigen schreiben möchten, befolgen Sie einfach die Richtlinien (das PEP-Dokument selbst enthält Beispiele). Kurz gesagt, was ist der Sinn hier? Warum genau benötigen Sie (mehr) Beispiele für diese Formatierung? –

+2

@agf: Das war nicht als Umfrage gedacht. Ich glaube, dass die PEP in einigen Bereichen nicht hundertprozentig klar ist, und ich suche nach Beispielen, die diese Teile verdeutlichen. Insbesondere suche ich nach einem Beispiel für Docstrings für eine Klasse, die dem PEP entspricht. Der Code von halst zeigt leere Zeilen vor und nach der Klasse DocString sowie eine leere Zeile am Ende des DocStrings. Das ist eine weitere Option, an die ich nicht einmal gedacht hatte. – Bram

Antwort

7

keine direkte Antwort, aber wenn Sie mit PEP257 erfüllen möchten, können Sie ein Tool verwenden, schrieb ich: https://github.com/halst/pep257

ich zu war schockiert, wie viel Code zu sehen (auch in der Standardbibliothek) versucht nicht einmal, PEP257 zu entsprechen.

Wahrscheinlich sind die meisten Leute denken, dass ihre docstring-Stil macht Sinn, und ich dachte auch etwas umständlich zu dem PEP257 Stil, aber, nachdem es seit einiger Zeit fiel ich in der Liebe mit ihr mit, und denke, dass es die schönste Art ist, Docstrings zu schreiben. Ich folge immer PEP257 in jedem Aspekt, den ich kann, und schrieb das Tool, damit mehr Leute sehen können, wie sie ihren Stil verbessern können.

Als Beispiel hatte ich eine lustige Erfahrung mit PEP8 und pep8 tool: wenn ich es hat mir gefallen erste PEP8 lesen und dachte ich es folgen, aber wenn ich auf PEP8 meinen Code versucht Ich war schockiert, wie weit von PEP8 Ich bin, und wie besser mein Code aussieht, behebe ich diese Stilfehler.

Ich hoffe, die Leute werden ähnliche Erfahrung mit pep257 haben, und beginnen, PEP257 glücklich seitdem zu folgen.

+0

Danke, das wird sicherlich helfen. Es zeigt schon, dass Sie die PEP etwas anders interpretiert haben als ich. – Bram

+0

@Bram Interessant! Welche Teile von PEP hast du anders interpretiert? Nur neugierig. Vielleicht gibt es einen Fehler in meiner Interpretation. – Halst

+0

Bevor ich Ihre pep257.py gelesen habe, habe ich keine Leerzeilen vor ** und ** nach den Anführungszeichen berücksichtigt. – Bram

0

Soweit ich sehen kann, das Dokument, das Sie verknüpft sagt:

eine leere Zeile nach alle Docstrings einlegen (einzeiligen oder mehrzeiligen), daß das Dokument eine Klasse - allgemein gesprochen Die Methoden der Klasse sind durch eine einzige Leerzeile voneinander getrennt, und der Docstring muss gegenüber der ersten Methode um eine Leerzeile versetzt werden.

(Hervorhebung von mir)

So sind die Beispiele, die Sie geben, sind alle richtig, da sie eine leere Zeile nach dem docstring haben, so dass die nächste Methode Erklärung mit einer Leerzeile zu trennen.