Oversigt over Abstract Class i Python

Abstrakte klasser er de klasser, der er erklæret, men indeholder ingen implementeringer. Det kan kun arves. Abstrakte klasser fungerer som en skabelon for underklasserne. Abstrakte klasser kan ikke startes og kræver underklasser for at give implementeringer til abstrakte metoder. Det har brug for underklasser for at give implementeringer af de abstrakte metoder, der er defineret i abstrakte klasser. Abstrakte klasser indeholder en eller flere abstrakte metoder. Abstrakte metoder er de metoder, der erklæres uden implementeringer. Vi kan ikke direkte oprette objektet fra abstrakt klasse, men vi kan arve til baseklassen og derefter oprette objektet. I dette emne skal vi lære om Abstract Class i Python.

Både den abstrakte klasse såvel som den konkrete klasse kan indeholdes i abstrakt-klassen. Ved at bruge en abstrakt klasse kan vi definere en generaliseret struktur af metoderne uden at give komplette implementeringer af hver metode. Abstrakte metoder, der er defineret i den abstrakte klasse, har generelt ikke kroppen, men det er muligt at have abstrakte metoder med implementeringer i den abstrakte klasse, og hvis der kommer en underklasse fra sådanne abstrakte klasses behov, skal de sørge for implementering af sådanne metoder . Hvis nogen abstrakt metode ikke implementeres af den afledte klasse, kaster den en fejl. Det abstrakte klasseobjekt kan ikke oprettes direkte, men når vi bruger denne abstrakte klasse til at give visse funktionaliteter til en baseklasse eller børneklasse, kan det gøre det ved at oprette objektet for baseklassen.

Betydningen af ​​abstrakte klasser

1. Det giver standardfunktionaliteten for baseklasserne.

2. Det definerer et fælles API for sæt underklasser, der er nyttigt, når en tredjepart leverer plugins i en applikation.

3. Hjælpsom med stor kode var det vanskeligt at huske mange klasser.

Syntaks

From abc import ABC
Class Educba(ABC):

For at betragte enhver klasse som en abstrakt klasse skal klassen arve ABC metaklasse fra det indbyggede python-modul. abc-modul importerer ABC-metaklassen.

Abstrakte metoder i Python

Abstrakte metoder er de metoder, der erklæres uden implementeringer.

Syntaks

from abc import ABC, abstract method
Class Educba(ABC):
@abstractmethod
def mymethod(self):
#empty body
pass

For at definere de abstrakte metoder i en abstrakt klasse skal metoden dekoreres med et nøgleord kaldet @abstractmethod decorator. @Abstractmethod-dekoratøren skal importeres fra det python-indbyggede bibliotek kaldet abc.

Hvordan fungerede Abstract Classes i Python?

Python har ikke abstrakte klasser som standard, men har et modul eller bibliotek, der danner basen til at definere abstrakte baseklasser (ABC), og det modulnavn kaldes ABC. Det markerer metoderne for baseklassen som den abstrakte baseklasse og producerer derefter konkrete klasser som implementeringer af den abstrakte base. En metode bliver til en abstrakt metode ved hjælp af et dekoratørnøgleord kaldet @abstractmethod.

ABC-modul bruges til at oprette de abstrakte klasser, @ abstractmethod er den dekoratør, der bruges til at erklære metoden abstrakt. ABC-modul etablerer en kontrakt mellem baseklassen og betonklassen.

Abc-modulet giver grundlaget for at definere abstrakte baseklasser (ABC) i Python. Samlingsmodulet har nogle konkrete klasser, der er afledt af ABC, og de kan opdeles yderligere. Bortset fra alle disse indeholder samlingsmodulet også noget ABC, der kan bruges til at teste, om en klasse eller instans giver en bestemt grænseflade eller ej.

Dette modul indeholder følgende klasse:

klasse abc.ABCMeta

Metaklassen bruges til at definere abstrakte baseklasser (ABC)

Vi bruger en metaklasse til at skabe en abstrakt baseklasse.

from abc import ABCMeta
class C:
__metaclass__ = ABCMeta
MyABC.register(tuple)
assert issubclass(tuple, C)
assert isinstance((), C)

Eksempel

# importing the ABC module
from abc import ABC, abstractmethod
class Shape(ABC):
def common(self):
print("This is a concrete method")
@abstractmethod # decorator
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Square(Shape):
def __init__(self, side):
self.__side=side
def area(self):
return self.__side*self.__side
def perimeter(self):
return 4*self.__side
class Rectangle(Shape):
def __init__(self, length, breath):
self.__length=length
self.__breath=breath
def area(self):
return self.__length*self.__breath
def perimeter(self):
return 2*(self.__length+self.__breath)
S1=Square(4)
print(S1.common())
print(S1.area())
print(S1.perimeter())
R1=Rectangle(2, 4)
print(R1.common())
print(R1.area())
print(R1.perimeter())

Output opnået

Dette er en konkret metode

16

16

Dette er en konkret metode

8

12

I ovenstående eksempel er klassen Abstrakt form, der indeholder en konkret metode kaldet almindelig og to abstrakte metoder kaldet område og omkreds. Der er to underordnede klasser firkant og rektangel, der arver den abstrakte klasse form og implementerer den abstrakte metode.

Implementering gennem underklasse:

import abc
class Shape:
def area(self):
pass
class Square(Shape):
def area(self):
print("Square is a child class")
print( issubclass(Square, Shape))
print( isinstance(Square(), Shape))

Abstrakte egenskaber

Abstrakte klasser indeholder abstrakte egenskaber sammen med abstrakte metoder defineret af @abstractproperty.

Vi kan nu bruge property, property.getter (), property.setter () og property.deleter () med abstrakte klasser.

Syntaks

class class_name(ABC):
@property
@abstractmethod
Def method(self):

Dette definerer den read-only egenskab.

class Class_name:
__metaclass__ = ABCMeta
def getx(self): …
def setx(self, value): …
x = abstractproperty(getx, setx)

Python 2

class C(ABC):
@abstractproperty
def my_abstract_property(self):

Python 3.3

class C(ABC):
@property
@abstractmethod
def my_abstract_property(self):
import abc
from abc import ABC, abstractmethod
class Shape(ABC):
@abc.abstractproperty
def area(self):
return "Shape class"
class Square(parent):
@property
def area(self):
return "Square class"
try:
s1 =Shape()
print( s1.area)
except for Exception as err:
print (err)
s1 = Square()
print (s1.area)

Produktion:

Kan ikke genoprette abstrakt klasseform med abstrakt metodeområde

Firkantet klasse

Konklusion

Til sidst konkluderer jeg, at abstrakt klasse er en måde at sikre et vist niveau af kodekvalitet, fordi de håndhæver visse standarder og kan reducere mængden af ​​duplikatkode, som vi skriver. Det skaber en forbindelse mellem baseklassen og betonklassen. Det giver en nem implementering af kode. Den definerer en generaliseret metodestruktur uden dens fuldstændige implementering. Det gør programmeringslivet let ved at abstrahere baggrundsprocessen og få dem til kun at fokusere på vigtige punkter. Det gør forskningen og forståeligheden meget hurtigere ved at forstå den fælles og enkle struktur af klasser inden for koden.

Anbefalede artikler

Dette er en guide til Abstract Class i Python. Her diskuterer vi, hvordan fungerer abstrakte klasser i Python med vigtigheden og metoderne med passende eksempler. Du kan også se på de følgende artikler for at lære mere -

  1. Python-filoperationer
  2. Indkapsling i Python
  3. Sløjfer i Python
  4. Konstruktør i Python
  5. Python-sæt
  6. Introduktion til abstrakt klasse i PHP

Kategori: