2015-02-10 11 views
10

Czytałem przez Numpy's documentation standards, i nie wydaje się, aby wspomnieć o atrybutach obiektu - tylko atrybuty klasy.Jak powinienem dokumentować atrybuty klas i obiektów za pomocą stylu Numpy?

Na przykład, w jaki sposób mogę udokumentować następujące?

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: Chciałem tylko zwrócić uwagę, że jestem przełączania Napoleon, które mówi, że obsługuje atrybuty, ale nie specjalnie instancja klasy lub atrybuty.

+3

Różnica między atrybutami "klasa" i "obiekt" w pythonie jest dość subtelna, więc myślę, że różnica jest pomijana w standardach. Spójrz [tutaj] (http://www.toptal.com/python/python-class-attributes-an-overly-thorough-guide), aby omówić, w jaki sposób atrybuty klasy i instancji nie zachowują się tak, jak wielu by się spodziewało je w python. –

Odpowiedz

5

Próbowałem tego, co jest wymienione w pliku How to Document podanym w numpy. Wymienia dokumentację atrybutów klasowych, które należy traktować w następujący sposób.

odcinek znajdujący się poniżej sekcji Parametry Atrybuty mogą być wykorzystane do opisania zmiennych klasy:

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

To idzie na wspomnieć, że właściwości instancji powinien mieć swoją własną dokumentację i być wymienione tylko wg nazwy.

To ma sens, ale nie mogę znaleźć żadnych przykładów tego w numpy kodu źródłowego. Najbliższe, które znalazłem, zrobiły coś innego w ABCPolyBase class.

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

Moim zdaniem, dokumentacja wykorzystywane w klasie _polybase.py jest czytelne, ale nie wierzę, korzystanie Class Attributes będzie współpracować z Sphinx podsumowań AutoDoc.

Mam nadzieję, że ta informacja jest przydatna.

+0

Dobre kopanie - dzięki! Zastanawiam się, dlaczego atrybuty instancji powinny pozostać nieudokumentowane - uważam, że są one dużo bardziej użyteczne niż atrybuty klasowe (zwłaszcza, że ​​jak pokazał @Bi Rico, atrybuty instancji zastępują atrybuty klasowe). –

+0

Zastanawiam się, czy będę musiał rozszerzyć Napoleona, aby móc używać Atrybutów Klasy lub Instancji - nie wygląda to tak, że wymieniają je oddzielnie w dokumentacji: http: //sphinxcontrib-napoleon.readthedocs .org/pl/latest/index.html –

+0

Istnieje otwarty problem dotyczący Sphinx dotyczący atrybutów klasy i atrybutów związanych z pomyłkami: https://github.com/sphinx-doc/sphinx/issues/3141 – x0s