Как мне написать частные/защищенные методы модуля в Python?Python

Программы на Python
Anonymous
 Как мне написать частные/защищенные методы модуля в Python?

Сообщение Anonymous »

Я понимаю, что для написания частных/защищенных функций или методов вы используете имена с подчеркиванием в начале:

Код: Выделить всё

def _func():
...
но у меня есть иерархия объектов со специализированными переопределениями. Кроме того, я хочу скрыть внутреннюю реализацию (поскольку она не предназначена для внешнего использования, и поэтому я надеюсь, что смогу улучшить ее, не нарушая код). Если я использую

Код: Выделить всё

class Paragraph(Tag):
def _method(self):
...
и попробуйте вызвать _method из другого класса, который является подклассом Tag, IntelliJ IDEA (и, возможно, pylint/другие программы проверки тоже) выдаст мне предупреждение:

доступ к защищенному члену класса _method

Есть ли есть ли способ это исправить?
Мой вариант использования — набор объектов тегов уценки для создания структуры, подобной дереву, которую можно преобразовать в правильную строку уценки. Каждый тег переопределяет защищенный метод для преобразования самого себя и содержащихся в нем тегов, а некоторые переопределяют метод для проверки допустимости вложенных тегов (например, отсутствие вложенных жирных шрифтов). Только контекст тега верхнего уровня имеет общедоступный метод для преобразования дерева.

Подробнее здесь: https://stackoverflow.com/questions/231 ... -in-python

Вернуться в «Python»