Включение строки документации в другую строку документации - PullRequest
0 голосов
/ 06 октября 2019

Проблема: я хочу использовать одну строку документации в другой строке документа.

Предположим, у меня есть следующий фрагмент:

def window(dimensions: tuple):
    '''
    Function to create an app window and return it

    PARAMETERS
    ----------
    dimensions : tuple
        The width and height of the window to create

    RETURNS
    -------
    display.Window
        Class to implement a screen           # Make this equal to Window.__doc__ 
    '''
    class Window:
        '''
        Class to implement a screen
        '''
        def __init__(self, dimensions: tuple):
            pass
    return Window(dimensions)

Я хочу автоматически установить строку документа для window, чтобы включитьстрока документации для Window

Я прочитал, что вы можете установить строку документации вручную, например, так:

window.__doc__ = "".join((window.__doc__, Window.__doc__))

Но она выполняется только при вызове функции.

Кроме того, я мог бы использовать декораторы, но есть ли более простой и интуитивно понятный способ сделать это?

Бонус: Есть ли способ решить, где именно в строке документации я могу включить другую?

РЕДАКТИРОВАТЬ: Итак, похоже, что есть двойной ответ на этот вопрос, но, поскольку я специально спросил без декораторов, это делает мой вопрос несколько другим. Кроме того, мое использование вложенного класса в window означает, что любая попытка изменить __doc__:

  1. внутри window: не произойдет, пока не будет вызвана функция.
  2. за пределами window: не будет работать, поскольку Window является вложенным.
Таким образом, это исключает оба эти метода, как есть.

Но ответ, конечно, должен быть одним из них. Таким образом, ответ является дубликатом, а не вопросом. : P

Поэтому мне пришлось реструктурировать свой код. Смотри ниже.

1 Ответ

0 голосов
/ 06 октября 2019

Благодаря @aparpara я нашел этот ответ (который не появился, когда я искал его в Интернете), и это заставило меня понять, что (возможно?) Нет решения для моего конкретного вопроса.

Поэтому мне пришлось удалить вложенный класс, чтобы иметь доступ к нему вне функции.

Вот окончательная версия.

# module display_module.py

class Window:
    '''
    Class to implement pygame's screen
    '''
    def __init__(self, dimensions: tuple):
        pass

def window(dimensions: tuple):
    '''
    Function to create an app window and return it

    PARAMETERS
    ----------
    dimensions : tuple
        The width and height of the window to create

    RETURNS
    -------
    display.Window
        {0}
    '''
    return Window(dimensions)

window.__doc__ = window.__doc__.format(Window.__doc__.strip())

Все еще открыты для любых ответов на старый вопрос!

...