Я пишу легкий класс, чьи атрибуты предназначены для публичного доступа и только иногда переопределяются в конкретных экземплярах. На языке Python нет никаких условий для создания docstrings для атрибутов класса или любых атрибутов. Каков приемлемый способ, должен ли он быть, документировать эти атрибуты? В настоящее время я делаю такую вещь:Как записать атрибуты класса в 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)
Это приведет строку документации Класса, содержащей начальный участок стандарта, а строка документации также линии добавляемого для каждого атрибута с помощью дополненного присвоения __doc__
.
Хотя этот стиль, по-видимому, не запрещен в docstring style guidelines, он также не упоминается как опция. Преимущество здесь в том, что он обеспечивает способ документировать атрибуты наряду с их определениями, при этом создавая презентабельную docstring класса и избегая необходимости писать комментарии, которые повторяют информацию из docstring. Меня все еще раздражает, что я должен на самом деле написать атрибуты дважды; Я рассматриваю возможность использования строковых представлений значений в docstring, чтобы избежать дублирования значений по умолчанию.
Является ли это отвратительным нарушением специальных конвенций сообщества? Это нормально? Есть ли способ лучше? Например, можно создать словарь, содержащий значения и docstrings для атрибутов, а затем добавить содержимое в класс __dict__
и docstring в конец объявления класса; это облегчит необходимость ввода имен атрибутов и значений дважды. Редактирование: эта последняя идея, по-моему, на самом деле не возможна, по крайней мере, не без динамического построения всего класса из данных, что кажется действительно плохим идеей, если нет других причин для этого.
Я довольно новичок в python и все еще разрабатываю детали стиля кодирования, поэтому также могут быть использованы не связанные с критикой критические замечания.
Если вы ищете способ документировать атрибуты модели Django, это может быть полезно: https://djangosnippets.org/snippets/2533/ –
Дубликат [Как документировать поля и свойства в Python?] (Http : //stackoverflow.com/questions/6060813/how-to-document-fields-and-properties-in-python), которые содержат другое решение. – bufh