Скажем, у меня есть класс, который выглядит примерно так:Как я могу документировать функцию, которая принимает функцию в качестве параметра с помощью Sphinx?
class FunctionCaller:
def __init__(self):
"""A class which can be used to call different functions which take the same
parameters
"""
self.f = lambda a,b: (a,b)
def setF(self, new_f):
"""Set the function to call
:param new_f: The new function this object should call
:type new_f: func(:class:`.SomeClass`, :class:`int`)
"""
self.f = new_f
def callF(self, a, b):
"""Call the function this object currently contains
:param a: Some value
:param b: Some other value
"""
return self.f(a,b)
class SomeClass:
"""Some class which does nothing
"""
pass
Например (игнорируя тот факт, что это может быть плохой стиль кодирования), давайте предположим, что функция, которую FunctionCaller
будет звонок ожидает взять SomeClass
в качестве своего первого параметра, а int - вторым. Я хотел бы, чтобы в документации отображались ссылки на обе эти вещи. Способ, которым я определил его в примере, работает, но он выглядит не очень хорошо.
Есть ли способ, которым я могу использовать спецификатор :type:
, чтобы указать, что параметр является функцией?
Я не могу думать о какой-либо другой способ использования ': тип:' в этом случае, но ИМХО это на самом деле не обеспечивают никакой полезной информации. Кто-нибудь помог, увидев, что тип «types.FunctionType»? Я предпочитаю «объяснение прозы». – mzjn