Pylint W0212 защищенный доступ
В Python префикс с одним подчеркиванием указывает, что член не должен быть доступен вне его класса. Похоже, это для отдельных классов, таких как Java и C++.
Тем не менее, Pylint, кажется, обеспечивает соблюдение этого соглашения для каждого объекта. Есть ли способ разрешить доступ для класса без обращения к #pylint: disable=protected-access
?
class A:
def __init__(self):
self._b = 5
def __eq__(self, other):
return self._b == other._b
Результат:
pylint a.py
a.py:6: W0212(protected-access) Access to a protected member _b of a client class
Pylint описывает сообщение здесь.
Ответы
Ответ 1
pylint не знает, какой тип other
(как это сделать, вы можете сравнить экземпляр A со всем), поэтому предупреждение. Я не думаю, что есть способ отключить предупреждение.
Вы можете отключить предупреждение только для одной строки с добавлением # pylint: disable=W0212
к этой строке.
Ответ 2
Кристиан Гейер прав в том, почему вы получаете ошибку и как ее отключить.
Я бы посоветовал вам подумать об изменении кода: pylint говорит вам кое-что важное. Из вашего примера кода выглядит так, как будто вы хотите использовать eq для сравнения объектов класса A с другими объектами класса A, но ваш пример не гарантирует, что вызывающая сторона не будет пытаться A() == C()
. Возвращение True
при проверке Circle()._radius == Sphere._radius
может вызвать проблемы.
Смотрите fooobar.com/info/25596/... для обсуждения того, как с этим справиться.