Can Pydoc / help () скрыть документацию для унаследованных методов класса и атрибуты?
-
27-09-2019 - |
Вопрос
При объявлении класса, наследующуюся от определенного класса:
class C(dict):
added_attribute = 0
Документация для класса C
Перечисляет все методы dict
(либо через help(C)
или pydoc
).
Есть ли способ скрыть унаследованные методы от автоматически сгенерированной документации (строка документации может ссылаться на базовый класс, для непереношенных методов)? Или это невозможно?
Это было бы полезно: pydoc
Перечисляет функции, определенные в модуле после его классы. Таким образом, когда классы имеют очень длинную документацию, напечатана много менее полезной информации, до того, как представлены новые функции, предоставляемые модулем, что делает документацию сложнее использовать (вы должны пропустить всю документацию для унаследованных методов Пока вы не достигнете чего-то конкретного для документированного модуля).
Решение
pydoc
и то help
Встроенный не поддерживает это, но нет причин, по которой вы не можете написать свой собственный инструмент (возможно, изменяя источник PYDOC), который бы поведение вы желаете. Просто идите обдумывать классов, чтобы получить локально определенные атрибуты, то ищите вещи, которые имеют док как атрибут.
Другие советы
У меня была та же проблема и решила его на Python 2.7.6 для Windows (x86), добавив 3 строки в Pydoc.py. Инструкции:
- Сделайте свою собственную копию lib pydoc.py
Найти все происшествия
inherited
переменная (3 раза, на мой счет) в файле и Установите его в пустой список Сразу после этого определено. Например, я получил строку 809:attrs, унаследованные = _split_list (attrs, лямбда t: t [2] - это значение)
и написал inherited = []
на новой строке под ним.
Теперь он больше не печатает наследственные методы.
Вы можете дать свой класс метакласс со специальным методом __dir__
Это возвращает свой список атрибутов. PYDOC будет использовать этот список.
Примечания:
- Это также повлияет на поведение
dir()
. - В редких случаях, как известно, использование метаклассов открывает портал к измерению ада.