Модификаторы доступа в Python используются для модификации области видимости переменных по умолчанию. Есть три типа модификаторов доступов в Python ООП:

  1. публичный — public;
  2. приватный — private;
  3. защищенный — 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 потому что он является приватным и к нему можно обратиться только внутри класса.