В чем смысл одинарного и двойного подчеркивания перед переменной или методом при определении класса? День добрый. Никак не могу понять, смысл одинарного подчеркивания. Пишут, что добавляет приватность, но я все равно могу обратиться ко всем объектам: _internal_name = 'one_nodule' # private variable _internal_version = '1.0' # private variable class _Base: # private class _hidden_factor = 2 # private variable def __init__(self, price): self._price = price def _double_price(self): # private method return self._price * self._hidden_factor def get_double_price(self): return self._double_price() По поводу двойного, могли бы разъяснить. Понял, что декарируются _ИмяКласса__метод, но как это выглядит на практике не совсем понимаю Заранее спасибо
День добрый! Одинарное подчеркивание перед именем переменной или метода в Python обозначает соглашение об использовании "protected" переменной или метода, то есть они предполагаются для внутреннего использования внутри класса или подклассов, но могут быть доступны извне. Это не является строгим правилом и скорее предположение для других программистов о том, что данная переменная или метод предназначен для внутреннего использования. Однако, как вы правильно заметили, доступ к ним все равно возможен извне.
Двойное подчеркивание перед именем переменной или метода в Python обозначает их "private" свойство. Python автоматически изменяет имя переменной/метода с двойным подчеркиванием на _ИмяКласса__переменная. Это делает их недоступными извне класса, в котором они определены. Тем не менее, есть способы доступа к "private" переменным и методам извне класса, но это не рекомендуется, так как это нарушает принципы инкапсуляции и может привести к ошибкам в коде.
В данном случае, переменная __hidden_factor, __price и метод __double_price считаются "private" и недоступны извне класса Base.
Надеюсь, это поможет вам лучше понять разницу между одинарным и двойным подчеркиванием в Python. Если у вас еще остались вопросы, не стесняйтесь спрашивать.
День добрый!
Одинарное подчеркивание перед именем переменной или метода в Python обозначает соглашение об использовании "protected" переменной или метода, то есть они предполагаются для внутреннего использования внутри класса или подклассов, но могут быть доступны извне. Это не является строгим правилом и скорее предположение для других программистов о том, что данная переменная или метод предназначен для внутреннего использования. Однако, как вы правильно заметили, доступ к ним все равно возможен извне.
Двойное подчеркивание перед именем переменной или метода в Python обозначает их "private" свойство. Python автоматически изменяет имя переменной/метода с двойным подчеркиванием на _ИмяКласса__переменная. Это делает их недоступными извне класса, в котором они определены. Тем не менее, есть способы доступа к "private" переменным и методам извне класса, но это не рекомендуется, так как это нарушает принципы инкапсуляции и может привести к ошибкам в коде.
Пример применения двойного подчеркивания:
class Base:__hidden_factor = 2
def __init__(self, price):
self.__price = price
def __double_price(self):
return self.__price * self.__hidden_factor
def get_double_price(self):
return self.__double_price()
В данном случае, переменная __hidden_factor, __price и метод __double_price считаются "private" и недоступны извне класса Base.
Надеюсь, это поможет вам лучше понять разницу между одинарным и двойным подчеркиванием в Python. Если у вас еще остались вопросы, не стесняйтесь спрашивать.