Режимы доступа public, protected, private.

Режимы доступа public, protected, private.

Python Proga

Как мы знаем, мы можем создать класс, а затем обращаться к его атрибутам и методам извне. Например:

Но давайте теперь рассмотрим этот класс:

И теперь при запуске кода мы получим ошибку:

Мы же создали атрибут, но почему возникает исключение? Давайте разберемся.


Всего в Python есть 3 режима доступа:

  1. public
  2. protected
  3. private

Теперь давайте посмотрим как выглядят атрибуты с разными режимами доступа:

  1. public - name
  2. protected - _name
  3. private - __name

Как мы поняли из примера, если название атрибута начинается с буквы, то у него режим доступа public, если с одного нижнего нижнего подчеркивания то режим доступа protected и если с двух нижних подчеркиваний, то режим доступа private.

Теперь давайте разберемся для чего нужны эти режимы доступа:

  1. Режим доступа public (name) - для обращения извне, внутри класса и во всех его дочерних классах
  2. Режим доступа protected (_name) - служит для обращения внутри класса и во всех его дочерних классах
  3. Режим доступа private (__name) - служит для обращения только внутри класса

И если к атрибутам с первыми двумя режимами доступа мы можем обратиться извне (к атрибуту с режимом доступа protected лучше не обращаться извне, не зря же программист начал его с нижнего подчеркивания):

То к атрибуту с режимом доступа private мы НЕ можем обратиться извне:

Но можем получить доступ к нему ВНУТРИ КЛАССА:

Но на самом деле, получить доступ в атрибуту с режимом доступа private можно и извне. Для этого нужно обратиться к атрибуту класса со следующем именем - _<название класса>__<название атрибута>. Например:


НО к атрибутам с режимом доступа protected и private извне лучше вообще не обращаться, несмотря на то, что это возможно.

И забыл сказать, тоже самое работает и с функциями:

Т.е у функций тоже есть три режима доступа (public, protected, private)

Report Page