En Python, le préfixe avec un trait de soulignement indique qu'un membre ne doit pas être accessible en dehors de sa classe. Cela semble être sur une base par classe comme Java et C++ .
Cependant, Pylint semble appliquer cette convention par objet. Existe-t-il un moyen d'autoriser l'accès par classe sans recourir à #pylint: disable=protected-access
?
class A:
def __init__(self):
self._b = 5
def __eq__(self, other):
return self._b == other._b
Résultat:
pylint a.py
a.py:6: W0212(protected-access) Access to a protected member _b of a client class
Pylint décrit le message ici .
pylint ne sait pas de quel type other
est (comment devrait-il, vous pouvez comparer une instance de A à tout), donc l'avertissement. Je ne pense pas qu'il existe un moyen de désactiver l'avertissement.
Vous pouvez désactiver l'avertissement pour cette seule ligne en ajoutant # pylint: disable=W0212
à cette ligne.
Christian Geier a raison de savoir pourquoi vous obtenez l'erreur et comment la désactiver.
Je vous encourage cependant à envisager de changer votre code: pylint vous dit quelque chose d'important. D'après votre exemple de code, vous souhaitez utiliser eq compare des objets de classe A à d'autres objets de classe A, mais votre exemple ne garantit pas qu'un appelant n'essaiera pas A() == C()
. Renvoyer True
lorsque vous cochez Circle()._radius == Sphere._radius
semble susceptible de causer des problèmes.
Voir ce thread stackoverflow pour une discussion sur la façon de gérer cela.