Can Pydoc / help () скрыть документацию для унаследованных методов класса и атрибуты?

StackOverflow https://stackoverflow.com/questions/2857247

Вопрос

При объявлении класса, наследующуюся от определенного класса:

class C(dict):
    added_attribute = 0

Документация для класса C Перечисляет все методы dict (либо через help(C) или pydoc).

Есть ли способ скрыть унаследованные методы от автоматически сгенерированной документации (строка документации может ссылаться на базовый класс, для непереношенных методов)? Или это невозможно?

Это было бы полезно: pydoc Перечисляет функции, определенные в модуле после его классы. Таким образом, когда классы имеют очень длинную документацию, напечатана много менее полезной информации, до того, как представлены новые функции, предоставляемые модулем, что делает документацию сложнее использовать (вы должны пропустить всю документацию для унаследованных методов Пока вы не достигнете чего-то конкретного для документированного модуля).

Это было полезно?

Решение

pydoc и то help Встроенный не поддерживает это, но нет причин, по которой вы не можете написать свой собственный инструмент (возможно, изменяя источник PYDOC), который бы поведение вы желаете. Просто идите обдумывать классов, чтобы получить локально определенные атрибуты, то ищите вещи, которые имеют док как атрибут.

Другие советы

У меня была та же проблема и решила его на Python 2.7.6 для Windows (x86), добавив 3 строки в Pydoc.py. Инструкции:

  1. Сделайте свою собственную копию lib pydoc.py
  2. Найти все происшествия inherited переменная (3 раза, на мой счет) в файле и Установите его в пустой список Сразу после этого определено. Например, я получил строку 809:

    attrs, унаследованные = _split_list (attrs, лямбда t: t [2] - это значение)

и написал inherited = [] на новой строке под ним.

Теперь он больше не печатает наследственные методы.

Вы можете дать свой класс метакласс со специальным методом __dir__ Это возвращает свой список атрибутов. PYDOC будет использовать этот список.

Примечания:

  • Это также повлияет на поведение dir().
  • В редких случаях, как известно, использование метаклассов открывает портал к измерению ада.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top