Python инкапсуляция

Инкапсуляция в Python - это механизм, позволяющий скрыть или ограничить доступ к атрибутам и методам класса. Открытые (public), защищенные (protected) и закрытые (private) атрибуты и методы класса могут быть определены с помощью различных видов атрибутов и методов.

Открытые (public) атрибуты и методы являются доступными из любого места программы и могут быть обращены к ним напрямую. Например, рассмотрим класс "Person" с открытым атрибутом "name":

python
class Person:
    def __init__(self, name):
        self.name = name
person = Person("John")
print(person.name)  # Выводит "John"

Защищенные (protected) атрибуты и методы начинаются с символа подчеркивания перед их именем. Они могут быть доступны только внутри класса и его подклассов. В классе "Person" определим защищенный метод "display_name":

python
class Person:
    def __init__(self, name):
        self._name = name
    def _display_name(self):
        print(self._name)
person = Person("John")
person._display_name()  # Выводит "John"

Закрытые (private) атрибуты и методы начинаются с двух символов подчеркивания перед их именем. Они могут быть доступны только внутри класса, но не доступны для его подклассов или для внешних объектов. В классе "Person" определим закрытый атрибут "age":

python
class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
    def get_age(self):
        return self.__age
person = Person("John", 30)
print(person.get_age())  # Выводит 30
print(person.__age)  # Ошибка: 'Person' object has no attribute '__age'

При попытке обратиться к закрытому атрибуту "__age" вне класса возникает ошибка.

Этот механизм инкапсуляции позволяет скрыть внутренние детали реализации класса и обеспечить безопасность данных. Однако, в Python инкапсуляция основана на соглашениях между программистами, а не на строгой приватности. Например, закрытые атрибуты все еще могут быть доступными с использованием имени вида "_ClassName__attribute".

Похожие вопросы на: "python инкапсуляция "

Округление чисел: правила и методы в математике
Комментарий HTML: как использовать внутри кода и зачем это нужно
List Style Type: Как изменить стиль маркера в списке
Invalid CSRF Token - Как исправить эту ошибку на сайте
Ошибка "неверный домен ключа": как ее исправить
Преобразование строки в число в JavaScript: основные способы и методы работы
Что такое backslash и как его использовать
Изучаем оператор Switch в JavaScript
Entity Framework Core C#: основы, примеры кода, советы
Поиск подстроки в строке C: алгоритмы и примеры реализации