2015-02-10 5 views
10

Ich habe gelesen Numpy's documentation standards, und es scheint keine Objektattribute zu erwähnen - nur Klassenattribute.Wie soll ich Klassen- und Objektattribute mit Numpys Stil dokumentieren?

Also zum Beispiel, wie würde ich Folgendes dokumentieren?

class ClassA(object): 
    """Short description of ClassA 

    Long description of ClassA 

    Parameters 
    ---------- 
    param : param_type, optional 
     param_description 

    Attributes (class) 
    ---------- 
    class_attr : class_attr_type 
     class_attr_description 

    Attributes (object) 
    ---------- 
    obj_attr : obj_attr_type 
     obj_attr_description 

    """ 

    class_attr = 'something' 

    def __init__(self, arg='something else'): 
     self.obj_attr = arg 

EDIT: Ich wollte nur anmerken, dass ich zu Napoleon bin Umschalten, das sagt, dass es Attribute unterstützt, aber nicht speziell Klasse oder Instanz-Attribute.

+3

Der Unterschied zwischen "Klasse" und "Objekt" Attribute in Python sind ziemlich subtil, so denke ich, dass der Unterschied in den Standards beschönigt ist. Werfen Sie einen Blick [hier] (http://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide) für eine Diskussion darüber, wie sich Klassen- und Instanzattribute nicht so verhalten, wie viele erwarten würden sie in Python. –

Antwort

5

Ich habe versucht, was in der How to Document Datei in numpy angegeben erwähnt wird. Es erwähnt die Dokumentation von Klassenattributen sollte wie folgt behandelt werden.

Ein Abschnitt Attribute unter dem Abschnitt Parameter befindet, verwendet werden Klassenvariablen zu beschreiben:

Attributes 
---------- 
x : float 
    The X coordinate. 
y : float 
    The Y coordinate. 

Es auf diese Instanz Eigenschaften zu erwähnen, geht sollten ihre eigene Dokumentation haben und nur aufgeführt werden namentlich.

Das ist sinnvoll, aber ich kann keine Beispiele dafür im numpy Quellcode finden. Der nächste, den ich fand, machte etwas anderes in ABCPolyBase class.

Attributes 
---------- 
coef : (N,) ndarray 
... 
Class Attributes 
---------------- 
maxpower : int 

Meiner Meinung nach ist die Dokumentation in der _polybase.py Klasse verwendet wird, ist gut lesbar, aber ich glaube nicht, dass die Class Attributes Nutzung mit Sphinx Autodoc Zusammenfassungen arbeiten.

Ich hoffe, dass diese Information hilfreich ist.

+0

Gut graben - danke! Ich habe mich gefragt, warum Instanzattribute nicht dokumentiert werden sollten - ich finde diese viel nützlicher als die Klassenattribute (besonders da, wie @Bi Rico gezeigt hat, Instanzattribute Klassenattribute ersetzen). –

+0

Ich frage mich, ob ich Napoleon erweitern muss, um Klassen- oder Instanzattribute verwenden zu können - es sieht nicht so aus, als würden sie diese separat in ihrer Dokumentation auflisten: http: //sphinxcontrib-napoleon.readthedocs .org/de/latest/index.html –

+0

Es gibt ein offenes Problem bei Sphinx über die Verwirrung, die Klassen- und Instanzattribute dokumentiert: https://github.com/sphinx-doc/sphinx/issues/3141 – x0s

Verwandte Themen