Атрибут добавлен с setattr не отображается в справке () - PullRequest
3 голосов
/ 28 ноября 2011

У меня есть класс, к которому я добавляю функцию помощи с setattr.Функция является правильно созданным методом экземпляра и работает как шарм.

import new
def add_helpfunc(obj):
    def helpfunc(self):
        """Nice readable docstring"""
        #code

    setattr(obj, "helpfunc", 
            new.instancemethod(helpfunc, obj, type(obj)))

Однако при вызове справки для экземпляра объекта новый метод не отображается в качестве члена объекта.Я думал, что help (т.е. pydoc) использовал dir (), но dir () работает, а не help ().

Что мне нужно сделать, чтобы обновить справочную информацию?

1 Ответ

2 голосов
/ 28 ноября 2011

У меня есть конкретная причина, вы делаете это сложным путем? Почему бы просто не сделать это так:

def add_helpfunc(obj):
    def helpfunc(self):
        """Nice readable docstring"""
        #code

    obj.helpfunc = helpfunc

Добавление метода таким способом также исправляет вашу проблему с помощью, если я не ошибаюсь ...

Пример:

>>> class A:
...     pass
...
>>> add_helpfunc(A)
>>> help(A.helpfunc)
Help on method helpfunc in module __main__:

helpfunc(self) unbound __main__.A method
    Nice readable docstring

>>> help(A().helpfunc)
Help on method helpfunc in module __main__:

helpfunc(self) method of __main__.A instance
    Nice readable docstring
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...