Я пишу облегченный класс, атрибуты которого должны быть общедоступными и лишь иногда переопределяться в определенных экземплярах. В языке 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__
.
Хотя этот стиль явно не запрещен в руководстве по стилю документации , он также не упоминается как вариант. Преимущество здесь состоит в том, что он предоставляет способ документировать атрибуты вместе с их определениями, при этом создавая презентабельную строку документации класса и избегая необходимости писать комментарии, которые повторяют информацию из строки документации. Меня все еще немного раздражает то, что мне приходится писать атрибуты дважды; Я рассматриваю возможность использования строковых представлений значений в строке документации, чтобы, по крайней мере, избежать дублирования значений по умолчанию.
Является ли это вопиющим нарушением специальных соглашений сообщества? Это нормально? Есть ли способ лучше? Например, можно создать словарь, содержащий значения и строки документации для атрибутов, а затем добавить содержимое в класс __dict__
и строку документации в конце объявления класса; это избавит от необходимости вводить имена и значения атрибутов дважды. edit : эта последняя идея, я думаю, на самом деле невозможна, по крайней мере, без динамического построения всего класса из данных, что кажется действительно плохой идеей, если для этого нет другой причины.
Я новичок в Python и все еще прорабатываю детали стиля кодирования, поэтому несвязанная критика также приветствуется.
attribute doc string
упоминается в PEP 257, который малоизвестен и кажется трудным найти, который может ответить на вопрос OP и поддерживается некоторыми исходными инструментами. Это не мнение. Это факт, и часть языка, и в значительной степени именно то, что хочет OP.