Python - доступ к защищенному члену _ класса
При наличии класса с некоторыми защищенными членами и общедоступным интерфейсом для их изменения, когда обычно допускается прямой доступ к защищенным членам? Я имею в виду несколько конкретных примеров:
- Модульное тестирование
- Внутренние закрытые методы, такие как __add__ или __cmp__ для доступа к другим защищенным атрибутам
- Рекурсивные структуры данных (например, доступ к next._data в связанном списке)
Я не хочу обнародовать эти атрибуты, так как не хочу, чтобы они были публично затронуты. Моя подсветка синтаксиса в IDE-синтаксисе постоянно повторяет, что я не прав в доступе к защищенным членам - кто здесь?
РЕДАКТИРОВАТЬ - добавив простой пример ниже:
class Complex:
def __init__(self, imaginary, base):
self._imaginary = imaginary
self._base = base
def __str__(self):
return "%fi + %f" % self._base, self._imaginary
def __add__(self, other):
return Complex(self._imaginary + other._imaginary, self._base + other._base)
Pycharm выделяет other._imaginary и other._base следующим образом:
Доступ к защищенному члену _imaginary класса
1 ответ
Решено - проблема заключалась в отсутствии подсказок. Ниже работает сейчас:
class Complex:
def __init__(self, imaginary, base):
self._imaginary = imaginary
self._base = base
def __str__(self):
return "%fi + %f" % self._base, self._imaginary
def __add__(self, other):
"""
:type other: Complex
:rtype Complex:
"""
return Complex(self._imaginary + other._imaginary, self._base + other._base)