2015-02-10 10 views
10

Ho letto il codice Numpy's documentation standards e non sembra menzionare gli attributi dell'oggetto - solo gli attributi di classe.Come devo documentare gli attributi di classe e oggetto usando lo stile di Numpy?

Quindi, ad esempio, come posso documentare quanto segue?

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: Volevo solo sottolineare che sto passando a Napoleon, che dice che supporta gli attributi, ma non specificamente classe o attributi di istanza.

+3

La differenza tra gli attributi "classe" e "oggetto" in python è piuttosto sottile, quindi penso che la differenza sia superata negli standard. Date un'occhiata [qui] (http://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide) per una discussione su come gli attributi di classe e istanza non si comportano come molti si aspetterebbero loro a in python. –

risposta

5

Ho provato quanto menzionato nel file How to Document fornito in numpy. Si menziona la documentazione degli attributi di classe dovrebbe essere gestita come segue.

Una sezione Attributi, che si trova sotto la sezione Parametri, può essere usato per descrivere le variabili di classe:

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

Si va avanti a dire che le proprietà di istanza dovrebbe avere la propria documentazione e essere elencati solo per nome.

Questo ha senso, ma non riesco a trovare alcun esempio di questo nel codice sorgente numpy. Il più vicino che ho trovato ha fatto qualcosa di diverso in ABCPolyBase class.

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

A mio parere, la documentazione utilizzata nella classe _polybase.py è leggibile ma non credo l'utilizzo Class Attributes lavorerà con Sphinx sommari AutoDoc.

Spero che questa informazione sia utile.

+0

Buona scavatura - grazie! Mi chiedevo perché gli attributi di istanza dovessero essere lasciati senza documenti - trovo quelli molto più utili degli attributi di classe (specialmente dal momento che, come ha mostrato @Bi Rico, gli attributi di istanza superano gli attributi di classe). –

+0

Mi chiedo se dovrò estendere Napoleon per poter utilizzare gli attributi di classe o di istanza - non sembra che li elenchino separatamente nella loro documentazione: http: //sphinxcontrib-napoleon.readthedocs .org/it/latest/index.html –

+0

C'è un problema aperto su Sphinx sulla confusione che documenta le classi e gli attributi di istanza: https://github.com/sphinx-doc/sphinx/issues/3141 – x0s