Понимание абстракции в Python

| | | | | | | | | | | | | | | | | | |

В этом руководстве мы обсудим концепцию абстракции в Python для объектно-ориентированного подхода к программированию.

По сути, абстракция фокусируется на сокрытии внутренних реализаций процесса или метода от пользователя. Таким образом, пользователь знает, что делает, но не знает, как выполняется работа.

абстракция



& nbsp;

Что такое абстракция в Python?

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

Мощный способ управления абстракцией и использования иерархической классификации. Это позволяет нам наслаивать семантику сложных систем, разбивая их на более управляемые части. Снаружи автомобиль представляет собой единый объект. Оказавшись внутри, вы видите, что автомобиль состоит из нескольких подсистем: рулевого управления, тормозов, аудиосистемы, ремней безопасности и т. д. В свою очередь, каждая из этих подсистем состоит из более мелких блоков.

Суть в том, что мы едем автомобиль (или любая другая сложная система) с использованием иерархических абстракций.

Это также можно применить к компьютерным программам, использующим концепции ООП. В этом суть объектно-ориентированного программирования.

Абстрактные классы и методы в Python

Чтобы объявить абстрактный класс, нам сначала нужно импортировать модуль abc . Давайте посмотрим на пример.

 from abc import ABC class abs_class (ABC): #abstract методы 

Здесь abs_class &it is a abstract класс, в котором могут быть определены абстрактные методы или любые другие методы.




Как свойство абстрактные классы могут иметь любое количество абстрактных методов, сосуществующих с любым количеством других методов. Например, мы можем видеть ниже.

 from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # определение метода @abstractmethod def Abs_method (self): #Abs_method определение 

Здесь method() &нормальный метод, тогда как Abs_method() &абстрактный метод, который реализует @abstractmethod из модуля abc.

Пример

Теперь, когда мы знаем об абстрактных классах и методах, давайте рассмотрим пример.

 from abc import ABC, abstractmethod class Absclass (ABC): def print (self, x): print ("Переданное значение:", x) @abstractmethod def task (self): print ("Мы внутри задачи Absclass") class test_class (Absclass): def task (self): print ("Мы внутри задачи test_class") class example_class (Absclass): def task (self ): print ("Мы находимся внутри задачи example_class") #объект test_class created test_obj = test_class () test_obj.task () test_obj.print (100) #object of example_class created ex ample_obj = example_class () example_obj.task ( ) example_obj .print (200) print ("test_obj является экземпляром Absclass?", isinstance (test_obj, Absclass)) print ("example_obj является экземпляром Absclass?", isinstance (example_obj, Absclass)) 

Вывод:

 пример

где,

Absclass — это абстрактный класс, унаследованный от класса ABC модуля abc. Он содержит абстрактный метод task() и метод print() , которые видны пользователю. Два других класса, унаследованные от этого абстрактного класса, — это test_class и example_class . Оба имеют собственный метод task() (расширение абстрактного метода).

После того, как пользователь создает объекты из классов test_class и example_class и вызывает метод task() для обоих из них в игру вступают определения скрытого метода task() внутри обоих классов. Эти определения скрыты от пользователя. Абстрактный метод task() из абстрактного класса Absclass фактически никогда не вызывается.

Но когда print() метод вызывается так же, как для test_obj и example_obj, метод print() Absclass вызывается, потому что это не абстрактный метод.

Примечание: мы не можем создавать экземпляры абстрактного класса . Это вызывает ошибку.