Модификаторы доступа в Python используются для модификации области видимости переменных по умолчанию. Есть три типа модификаторов доступов в Python ООП:
- публичный — public;
- приватный — private;
- защищенный — protected.
Доступ к переменным с модификаторами публичного доступа открыт из любой точки вне класса, доступ к приватным переменным открыт только внутри класса, и в случае с защищенными переменными, доступ открыт только внутри того же пакета.
Для создания приватной переменной, вам нужно проставить префикс двойного подчеркивание __ с названием переменной.
Для создания защищенной переменной, вам нужно проставить префикс из одного нижнего подчеркивания _ с названием переменной. Для публичных переменных, вам не нужно проставлять префиксы вообще.
Давайте взглянем на публичные, приватные и защищенные переменные в действии.
Рассмотрим следующую структуру пакета:
cars
|-- __init__.py
|-- car.py
|-- corolla.py
__init__.py - пустой.
car.py содержит следующий код:
#Класс находится в папке cars
class Car:
def __init__(self):
print ("Двигатель заведен")
self.name = "corolla"
self.__make = "toyota"
self._model = 1999
corolla.py содержит следующий код:
import car
car_a = car.Car()
print(car_a.name) #corolla
print(car_a._model) #1999
print(car_a.__make) #AttributeError: 'Car' object has no attribute '__make'
Как можете видеть мы не можем обратиться к атрибуту __make потому что он является приватным и к нему можно обратиться только внутри класса.