Abstraktion in Python verstehen

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

In diesem Tutorial besprechen wir das Konzept der Abstraktion in Python für einen objektorientierten Programmieransatz.

Im Wesentlichen konzentriert sich die Abstraktion darauf, die internen Implementierungen eines Prozesses oder einer Methode vor dem Benutzer zu verbergen. Somit weiß der Benutzer, was er tut, aber nicht, wie die Arbeit erledigt wird.

 Abstraktion



& nbsp;

Was ist Abstraktion in Python?

Beispielsweise stellt man sich ein Auto nicht als eine Ansammlung von Tausenden von Einzelteilen vor. Stattdessen sehen sie es als ein genau definiertes Objekt mit seinem eigenen einzigartigen Verhalten. Diese Abstraktion ermöglicht es Menschen, ein Auto zu fahren, ohne sich der Komplexität der Teile bewusst zu sein, aus denen es besteht. Sie können die Details des Motorgetriebes und der Bremssysteme ignorieren. Stattdessen können sie das gesamte Objekt verwenden.

Eine leistungsstarke Möglichkeit, die Abstraktion und die hierarchische Klassifizierung zu manipulieren. Dies ermöglicht es uns, die Semantik komplexer Systeme zu schichten und sie in überschaubarere Teile zu zerlegen. Draußen ist das Auto ein einzelnes Objekt. Im Inneren sieht man, dass das Auto aus mehreren Subsystemen besteht: Lenkung, Bremsen, Audiosystem, Sicherheitsgurte usw. Jedes dieser Subsysteme wiederum besteht aus kleineren Blöcken.

Der Punkt ist, dass wir fahren ein Auto (oder irgendein anderes komplexes System), das hierarchische Abstraktionen verwendet.

Dies kann auch auf Computerprogramme angewendet werden, die OOP-Konzepte verwenden. Das ist die Essenz der objektorientierten Programmierung.

Abstrakte Klassen und Methoden in Python

Um eine abstrakte Klasse zu deklarieren, müssen wir zuerst das Modul abc importieren . Schauen wir uns ein Beispiel an.

 from abc import ABC class abs_class (ABC): #abstract methods 

Hier abs_class &es ist ein Abstract Klasse, in der abstrakte Methoden oder beliebige andere Methoden definiert werden können.




Als Eigenschaft können abstrakte Klassen eine beliebige Anzahl abstrakter Methoden haben, die mit einer beliebigen Anzahl koexistieren anderer Methoden. Zum Beispiel können wir unten sehen.

 from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # method definition @abstractmethod def Abs_method (self): #Abs_method definition 

Hier method () &normale Methode, wohingegen Abs_method () &eine abstrakte Methode, die implementiert @abstractmethod aus dem abc-Modul.

Beispiel

Nun, da wir etwas über abstrakte Klassen und Methoden wissen, schauen wir uns ein Beispiel an.

 from abc import ABC, abstractmethod class Absclass (ABC): def print (self, x): print ("Passed value:", x) @abstractmethod def task (self): print ("Wir sind in Absclass task") class test_class (Absclass): def task (self): print ("Wir sind in test_class task") class example_class (Absclass): def task (self ): print ("Wir befinden uns in der Aufgabe von example_class") #Objekt von test_class erstellt test_obj = test_class () test_obj.task () test_obj.print (100) #Objekt von example_class erstellt ex ample_obj = example_class () example_obj.task ( ) example_obj .print (200) print ("test_obj ist eine Instanz von Absclass?", isinstance (test_obj, Absclass)) print ("example_obj ist eine Instanz von Absclass?", isinstance (example_obj, Absclass)) 

Ausgabe:

 Beispiel

wo,

Absclass &it ist eine abstrakte Klasse, die von der ABC-Klasse des abc-Moduls geerbt wurde. Es enthält die abstrakte Methode task () und die Methode print () , die für den Benutzer sichtbar sind. Die anderen beiden von dieser abstrakten Klasse geerbten Klassen sind &diese sind test_class und example_class . Beide haben ihre eigene task() -Methode (eine abstrakte Methodenerweiterung).

Nachdem der Benutzer Objekte aus den Klassen test_class und example_class erstellt und die task()-Methode aufgerufen hat für beide kommen die versteckten Methodendefinitionen task () in beiden Klassen ins Spiel. Diese Definitionen sind für den Benutzer verborgen. Die abstrakte Methode task() aus der abstrakten Klasse Absclass wird eigentlich nie aufgerufen.

Aber wenn die print() Methode wird wie für test_obj und example_obj aufgerufen, die Methode print () Absclass wird aufgerufen, weil sie keine abstrakte Methode ist.

Hinweis: Wir können keine abstrakte Klasse instanziieren . Dies verursacht einen Fehler.