2015-11-02 5 views
3

Скажем, у меня есть класс, который выглядит примерно так:Как я могу документировать функцию, которая принимает функцию в качестве параметра с помощью 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:, чтобы указать, что параметр является функцией?

ответ

0

Есть ли способ, которым я могу использовать спецификатор :type:, чтобы указать, что параметр является функцией?

Вы можете указать types.FunctionType как тип, я полагаю. Но я полагаю, что вы просто объяснить, как это работает:

def setF(self, new_f): 
    """Set the function to call 

    :param new_f: The new function this object should call. 

    The new function takes two positional parameters: the first of 
    type :class:`.SomeClass` and the second of type :class:`int`. 
    """ 
    self.f = new_f 
+0

Я не могу думать о какой-либо другой способ использования ': тип:' в этом случае, но ИМХО это на самом деле не обеспечивают никакой полезной информации. Кто-нибудь помог, увидев, что тип «types.FunctionType»? Я предпочитаю «объяснение прозы». – mzjn

Смежные вопросы

 Смежные вопросы