Accessing a protected member from outside the class¶
Accessing a protected member (a member prefixed with _
) of a class from outside that class usually
calls for trouble, since the creator of that class did not intend this member to be exposed.
Anti-pattern¶
class Rectangle(object):
def __init__(self, width, height):
self._width = width
self._height = height
r = Rectangle(5, 6)
# direct access of protected member
print("Width: {:d}".format(r._width))
Best practice¶
If you are absolutely sure that you need to access the protected member from the outside, do the following:
Make sure that accessing the member from outside the class does not cause any inadvertent side effects.
Refactor it such that it becomes part of the public interface of the class.
References¶
PyLint - W0212, protected-access