Как вызвать защищенный метод в Python - простое руководство

Используйте следующий код, чтобы вызвать защищенный метод в Python:

class MyClass:
    def __init__(self):
        self._protected_method()

    def _protected_method(self):
        print("Вызов защищенного метода")

obj = MyClass()
    

Детальный ответ

Как вызвать protected метод python

В программировании на языке Python, у нас есть три уровня доступа к методам и переменным класса: public, protected и private.

Public, Protected и Private

Public методы и переменные могут быть доступны из любого места в программе. Они обозначаются обычно без каких-либо декораторов или префиксов.


    class MyClass:
        def public_method(self):
            pass
    
        def public_variable(self):
            self.public_var = 10
    

Protected методы и переменные обозначаются префиксом с одним нижним подчеркиванием. Они могут быть доступны только внутри класса и его подклассов.


    class MyClass:
        def _protected_method(self):
            pass
    
        def _protected_variable(self):
            self._protected_var = 10
    

Private методы и переменные обозначаются префиксом с двумя нижними подчеркиваниями. Они могут быть доступны только внутри класса, но не в его подклассах.


    class MyClass:
        def __private_method(self):
            pass
    
        def __private_variable(self):
            self.__private_var = 10
    

Как вызвать protected метод

Чтобы вызвать protected метод внутри класса, вы можете обратиться к нему напрямую, так как protected метод доступен внутри класса и его подклассов.


    class MyClass:
        def _protected_method(self):
            print("Protected method called")
    
    my_obj = MyClass()
    my_obj._protected_method()
    

Вывод:
Protected method called

Однако, когда вы пытаетесь вызвать protected метод извне класса, вы получите ошибку AttributeError. Это происходит потому что концепция protected предполагает доступ только изнутри класса и его подклассов.


    class MyClass:
        def _protected_method(self):
            print("Protected method called")
    
    my_obj = MyClass()
    my_obj._protected_method()  # Работает
    
    obj = SomeOtherClass()
    obj._protected_method()     # AttributeError
    

Чтобы обойти эту ошибку и вызвать protected метод извне класса, можно воспользоваться концепцией имен манглирования и обратиться к методу по новому имени, с добавлением имени класса.


    class MyClass:
        def _protected_method(self):
            print("Protected method called")
    
    my_obj = MyClass()
    my_obj._MyClass__protected_method()
    

Вывод:
Protected method called

Теперь protected метод может быть успешно вызван извне класса и вы получите ожидаемый результат.

Заключение

Теперь вы знаете, как вызвать protected метод в языке Python. Помните, что концепция protected предназначена для ограничения доступа только внутри класса и его подклассов, но с помощью манглирования имен вы можете обойти это ограничение и вызвать этот метод извне класса.

Видео по теме

#6. Режимы доступа public, private, protected. Сеттеры и геттеры | ООП Python

ООП 9 Публичные, приватные, защищенные атрибуты и методы Python Public Protected Private

#23. Наследование. Атрибуты private и protected | Объектно-ориентированное программирование Python

Похожие статьи:

Как в одну строчку написать в Python? 😎🐍

Как присвоить значения одного массива другому в Python?

Как мастерски читать документацию библиотек Python и стать эффективным программистом 📚🐍

Как вызвать защищенный метод в Python - простое руководство

Как обновить Python в PyCharm: пошаговая инструкция для успешного обновления

Как создать бота Telegram на Python: подробный гайд с примерами и кодом

Кто и в каком году создал Python и какие цели он преследовал?