In deze tutorial bespreken we het concept van abstractie in Python voor een objectgeoriënteerde programmeerbenadering.
In wezen richt Abstraction zich op het verbergen van de interne implementaties van een proces of methode voor de gebruiker. De gebruiker weet dus wat hij doet, maar niet hoe het werk wordt gedaan.
& nbsp;
Wat is abstractie in Python?
Mensen zien een auto bijvoorbeeld niet als een verzameling van duizenden afzonderlijke onderdelen. In plaats daarvan zien ze het als een goed gedefinieerd object met zijn eigen unieke gedrag. Deze abstractie stelt mensen in staat om een auto te besturen zonder zich bewust te zijn van de complexiteit van de onderdelen waaruit het bestaat. Ze kunnen de details van de motortransmissie en remsystemen negeren. In plaats daarvan kunnen ze het hele object gebruiken.
Een krachtige manier om abstractie te manipuleren en hiërarchische classificatie te gebruiken. Dit stelt ons in staat om de semantiek van complexe systemen in lagen te leggen en ze op te splitsen in beter hanteerbare stukken. Buiten is de auto een enkel object. Eenmaal binnen zie je dat de auto uit meerdere subsystemen bestaat: besturing, remmen, audiosysteem, veiligheidsgordels, etc. Elk van deze subsystemen bestaat op hun beurt uit kleinere blokjes.
Het gaat erom dat we rijden een auto (of een ander complex systeem) dat hiërarchische abstracties gebruikt.
Dit kan ook worden toegepast op computerprogramma`s die OOP-concepten gebruiken. Dit is de essentie van objectgeoriënteerd programmeren.
Abstracte klassen en methoden in Python
Om een abstracte klasse te declareren, moeten we eerst de module abc
importeren . Laten we een voorbeeld bekijken.
van abc import ABC class abs_class (ABC): #abstract methods
Hier abs_class
&het is een abstract klasse waarbinnen abstracte methoden of andere methoden kunnen worden gedefinieerd.
Als eigenschap kunnen abstracte klassen een willekeurig aantal abstracte methoden hebben, naast elk aantal van andere methoden. We kunnen bijvoorbeeld hieronder zien.
from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # methodedefinitie @abstractmethode def Abs_methode (zelf): #Abs_methodedefinitie
Hier methode ()
&normale methode, terwijl Abs_methode ()
&een abstracte methode die implementeert de @abstractmethod
uit de abc-module.
Voorbeeld
Nu we meer weten over abstracte klassen en methoden, gaan we een voorbeeld bekijken.
from abc import ABC, abstractmethod class Absclass (ABC): def print (self, x): print ("Passed value:", x) @abstractmethod def task (self): print ("We are inside Absclass task") class test_class (Absclass): def task (self): print ("We are inside test_class task") class example_class (Absclass): def task (self ): print ("We zijn in voorbeeld_klasse taak") #object van test_klasse gemaakt test_obj = test_klasse () test_obj.task () test_obj.print (100) #object van voorbeeld_klasse gemaakt voorbeeld_obj = voorbeeld_klasse () voorbeeld_obj.task ( ) example_obj .print (200) print ("test_obj is instantie van Absklasse?", isinstance (test_obj, Absclass)) print ("example_obj is instantie van Absclass?", isinstance (example_obj, Absclass))
Uitvoer:
waar,
task ()
methode en de print ()
methode die zichtbaar zijn voor de gebruiker. De andere twee klassen die van deze abstracte klasse zijn geërfd, zijn &deze zijn test_class
en example_class
. Beide hebben hun eigen methode task ()
(een abstracte methode-extensie).
Nadat de gebruiker objecten heeft gemaakt van de klassen test_class en example_class en de methode task () aanroept
voor beide komen de verborgen task ()
methodedefinities binnen beide klassen in het spel. Deze definities zijn verborgen voor de gebruiker. De abstracte methode task ()
uit de abstracte klasse Absclass
wordt eigenlijk nooit aangeroepen.
Maar wanneer de print ()
methode wordt aangeroepen zoals voor test_obj en example_obj, de print ()
Absclass methode wordt aangeroepen omdat het geen abstracte methode is.
Opmerking: we kunnen geen abstracte klasse instantiëren . Dit veroorzaakt een fout.