Python использует соглашение подчеркивания для частных переменных. Однако, ничто не кажется, чтобы остановить вас от портя базового класса случайно, напримерКак избежать случайного испорчения базового класса в Python?
class Derived(Base):
def __init__(self, ...):
...
super(Derived, self).__init__(...)
...
self._x = ...
если Base
также случается использовать имя _x
.
Каковы наилучшие методы предотвращения такого рода ошибок?
Это кажется особенно сложным, если разные люди реализованы Base
и Derived
классов, или _x
был добавлен в Base
после Derived
были реализованы (Таким образом, реализация Derived
будет нарушение инкапсуляции задним числом)
Насколько я знаю, вы можете получить доступ к переменным, используя их подогнанных имен, так что это не надежен, как говорят, приватная переменная в Java. – paisanco
В отношении документации на python: * Обратите внимание, что правила манипуляции разработаны в основном для предотвращения несчастных случаев; все еще можно получить доступ или изменить переменную, которая считается частной. Это может быть даже полезно в особых обстоятельствах, например, в отладчике. * Я добавлю это к своему ответу. – mhoff