Je suis en train d'écrire une classe légère, dont les attributs sont destinés à être accessible au public, et que parfois remplacée dans certaines instances. Il n'y a aucune disposition dans le langage Python pour créer des docstrings pour les attributs de classe, ou pour tout autre type d'attributs, pour cette question. Qu'est-ce que la façon acceptée, doit y en avoir un, pour documenter ces attributs? Actuellement, je suis en train de faire ce genre de chose:
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)
Cela se traduira dans la classe de docstring contenant de la norme initiale docstring de la section, ainsi que les lignes ajoutées pour chaque attribut via augmentée cession __doc__
.
Bien que ce style ne semble pas être expressément interdites dans la docstring lignes directrices de style, c'est pas mentionnée comme une option. L'avantage ici est qu'il fournit un moyen pour les attributs des documents aux côtés de leurs définitions, tout en créant une présentable classe docstring, et en évitant d'avoir à écrire des commentaires que réitérer les informations de la docstring. Je suis encore un peu ennuyé que j'ai d'écrire les attributs de deux fois; je suis envisage d'utiliser les représentations de chaîne de valeurs dans la docstring au moins d'éviter la duplication des valeurs par défaut.
Est-ce un odieux violation de l'ad hoc de la communauté des conventions? Est-il acceptable? Est-il un meilleur moyen? Par exemple, il est possible de créer un dictionnaire contenant des valeurs et des docstrings pour les attributs, puis ajouter le contenu de la classe __dict__
et docstring vers la fin de la déclaration de la classe; cela permettrait d'atténuer le besoin d'entrer les noms des attributs et des valeurs deux fois. edit: cette dernière idée est, je pense, pas possible, du moins pas sans dynamiquement la construction de l'ensemble de la classe à partir des données, ce qui semble être une très mauvaise idée, sauf si il y a une autre raison de le faire.
Je suis assez nouveau à python et encore de travailler sur les détails de style de codage, si peu en rapport avec les critiques sont aussi les bienvenues.