Estoy escribiendo una clase ligera cuyos atributos están destinados a ser de acceso público, y solo a veces se anula en instancias específicas. No hay ninguna disposición en el lenguaje Python para crear cadenas de documentos para los atributos de clase, o cualquier tipo de atributos, para el caso. ¿Cuál es la forma aceptada, debería haber una, para documentar estos atributos? Actualmente estoy haciendo este tipo de cosas:¿Cómo documentar los atributos de clase en 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)
Esto resultará en cadena de documentación de la clase que contiene la sección inicial estándar cadena de documentación, así como las líneas añadidas para cada atributo a través de la asignación aumentada para __doc__
.
Aunque este estilo no parece estar expresamente prohibido en el docstring style guidelines, tampoco se menciona como una opción. La ventaja aquí es que proporciona una forma de documentar los atributos junto con sus definiciones, al mismo tiempo que crea una docstring de clase presentable, y evita tener que escribir comentarios que reiteran la información de la docstring. Todavía estoy un poco molesto de tener que escribir los atributos dos veces; Estoy considerando usar las representaciones de cadena de los valores en la docstring para evitar al menos la duplicación de los valores predeterminados.
¿Es esto una abyecta infracción de las convenciones comunitarias ad hoc? ¿Está bien? ¿Hay una mejor manera? Por ejemplo, es posible crear un diccionario que contenga valores y docstrings para los atributos y luego agregar el contenido a la clase __dict__
y docstring hacia el final de la declaración de clase; esto aliviaría la necesidad de escribir los nombres y valores de los atributos dos veces. edit: esta última idea, creo, no es posible, al menos no sin construir dinámicamente toda la clase a partir de datos, lo que parece una idea realmente mala a menos que haya alguna otra razón para hacerlo.
Soy bastante nuevo en Python y todavía estoy resolviendo los detalles del estilo de codificación, por lo que las críticas no relacionadas también son bienvenidas.
Si está buscando una manera de documentar los atributos del modelo Django, esto podría ser útil: https://djangosnippets.org/snippets/2533/ –
Duplicado de [¿Cómo documentar campos y propiedades en Python?] (Http : //stackoverflow.com/questions/6060813/how-to-document-fields-and-properties-in-python) que contienen una solución diferente. – bufh