У меня есть функция, определенная с использованием первоклассной природы функций Python, а именно:
add_relative = np.frompyfunc(lambda a, b: (1 + a) * (1 + b) - 1, 2, 1)
Либо мне нужен способ добавить строку документации к функции, определенной как есть, либо добиться того же самого, используя более распространенный формат, чтобы я мог написать строку документации обычным способом:
def add_relative(a, b):
"""
Docstring
"""
return np.frompyfunc(lambda a, b: (1 + a) * (1 + b) - 1, 2, 1)(a, b)
который работает, когда функция вызывается как
add_relative(arr1, arr2)
но тогда я теряю возможность вызывать методы, например
add_relative.accumulate(foo_arr, dtype=np.object)
Я предполагаю, что это потому, что функция становится больше похожей на класс при использовании frompyfunc
, производной от ufunc
.
Я думаю, что мне может понадобиться определить класс, а не функцию, но я не уверен, как это сделать. Я был бы согласен с этим, потому что тогда я могу легко добавить строку документации, как обычно.
Я пометил это coding-style
, потому что исходный метод работает, но просто не может быть легко задокументирован, и мне очень жаль, если название неясно, я не знаю правильного словаря, чтобы описать это.
add_relative.__doc__ = 'string'
). - person Sam   schedule 20.12.2016numpy.ufunc
в качестве базового класса. При этом возникает ошибкаTypeError: type 'numpy.ufunc' is not an acceptable base type
. Я действительно не хочу писать целую функцию с нуля только для того, чтобы иметь возможность добавить строку документации, когда исходное определение функции работает отлично. - person Sam   schedule 20.12.2016__doc__
, но здесь это неуместно, так как этот атрибут неизменяем дляnumpy.ufunc
. - person Sam   schedule 22.12.2016