Подавить «Методы, унаследованные базовым классом» в подстроке подкласса - PullRequest
0 голосов
/ 03 июня 2018

Я создаю подкласс класса с большим количеством методов и длинных строк документации.Если я вызываю функцию справки IPython, я вижу всю помощь исходного класса.Я предполагаю, что это ожидается, есть ли способ подавить это?Я хотел бы видеть только методы, которые я переопределил.

mymodule.py:

import matplotlib.axes
class MySubclass(matplotlib.axes.Axes):
    pass

Если я делаю в IPython:

import mymodule
help(mymodule)

РаспечаткаОгромный, потому что он содержит все «Методы, унаследованные от matplotlib.axes._axes.Axes:», который представляет собой мегабайты текста, потому что он перечисляет строки документации всех методов класса.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Как обсуждено здесь , возможное рабочее решение будет состоять в том, чтобы вручную удалить документ

## List the methods from the original class
method_list = [func for func in dir(mymodule.MySubclass) if \ 
  callable(getattr(mymodule.MySubclass, func))]

## Remove doc for methods
for func in method_list:
  ## Change only original user defined methods
  if ("_" not in el[0:2]):
    original_method = getattr(mymodule.MySubclass, func)
    setattr(original_method, "__doc__", "")
  else:
    pass

. Это можно легко инкапсулировать в декораторе и вызывать при создании экземпляра подкласса или при импорте.модуль.

0 голосов
/ 04 июня 2018

Единственный способ, о котором я могу думать, это то, что если вы сделаете все функции, определенные в базовом классе в своем дочернем классе, и создадите свои собственные строки документов внутри них, то они могут быть перезаписаны.Вы можете даже оставить пустые строки документов, как вам угодно, но это будет довольно непрактично.

...