Sto scrivendo una classe leggera i cui attributi sono destinati ad essere accessibili pubblicamente e solo a volte sovrascritti in istanze specifiche. Non c'è alcuna disposizione nel linguaggio Python per la creazione di docstring per gli attributi di classe, o qualsiasi tipo di attributi, per quella materia. Qual è il modo accettato, se ce n'è uno, per documentare questi attributi? Attualmente sto facendo questo genere di cose:Come documentare gli attributi di classe in Python?
class Albatross(object):
"""A bird with a flight speed exceeding that of an unladen swallow.
Attributes:
"""
flight_speed = 691
__doc__ += """
flight_speed (691)
The maximum speed that such a bird can attain.
"""
nesting_grounds = "Raymond Luxury-Yacht"
__doc__ += """
nesting_grounds ("Raymond Luxury-Yacht")
The locale where these birds congregate to reproduce.
"""
def __init__(self, **keyargs):
"""Initialize the Albatross from the keyword arguments."""
self.__dict__.update(keyargs)
Questo si tradurrà in docstring della classe che contiene la parte iniziale standard di docstring, così come le linee aggiunte per ogni attributo tramite assegnazione aumentata per __doc__
.
Anche se questo stile non sembra essere espressamente vietato nello docstring style guidelines, non è nemmeno menzionato come opzione. Il vantaggio qui è che fornisce un modo per documentare gli attributi insieme alle loro definizioni, mentre continua a creare una docstring di classe presentabile, evitando di dover scrivere commenti che reiterano le informazioni dalla docstring. Sono ancora un po 'infastidito dal fatto che devo scrivere due volte gli attributi; Sto considerando di utilizzare le rappresentazioni di stringa dei valori nella docstring per evitare almeno la duplicazione dei valori predefiniti.
Si tratta di una violazione atroce delle convenzioni della comunità ad hoc? Va bene? C'è un modo migliore? Ad esempio, è possibile creare un dizionario contenente valori e docstring per gli attributi e quindi aggiungere i contenuti alla classe __dict__
e docstring verso la fine della dichiarazione di classe; questo allevierebbe la necessità di digitare due volte i nomi e i valori degli attributi. edit: questa idea, secondo me, non è effettivamente possibile, almeno non senza costruire dinamicamente l'intera classe dai dati, il che sembra una pessima idea a meno che non ci sia qualche altra ragione per farlo.
Sono abbastanza nuovo per Python e sto ancora elaborando i dettagli dello stile di codifica, quindi anche le recensioni non correlate sono ben accette.
Se si sta cercando un modo per documentare gli attributi del modello Django, questo potrebbe essere utile: https://djangosnippets.org/snippets/2533/ –
Duplicato di [Come documentare campi e proprietà in Python?] (Http : //stackoverflow.com/questions/6060813/how-to-document-fields-and-properties-in-python) che contengono una soluzione diversa. – bufh