Oversikt over Abstract Class in Python

Abstrakte klasser er klassene som er erklært, men inneholder ingen implementeringer. Det kan bare arves. Abstrakte klasser fungerer som en mal for underklassene. Abstrakte klasser kan ikke startes og krever underklasser for å gi implementeringer for abstrakte metoder. Den trenger underklasser for å gi implementeringer av de abstrakte metodene som er definert i abstrakte klasser. Abstrakte klasser inneholder en eller flere abstrakte metoder. Abstrakte metoder er metodene som deklareres uten implementeringer. Vi kan ikke direkte lage objektet til abstrakt klasse, men vi kan arve til baseklassen og deretter opprette objektet. I dette emnet skal vi lære om Abstract Class in Python.

Både den abstrakte klassen så vel som den konkrete klassen kan inngå i abstrakt-klassen. Ved å bruke en abstrakt klasse kan vi definere en generalisert struktur av metodene uten å gi komplette implementeringer av hver metode. Abstrakte metoder som er definert i den abstrakte klassen har generelt ikke kroppen, men det er mulig å ha abstrakte metoder med implementeringer i den abstrakte klassen, og hvis noen underklasse henter seg fra slike abstrakte klasser trenger å sørge for implementering for slike metoder. . Hvis noen abstrakt metode ikke er implementert av den avledede klassen, vil den kaste en feil. Det abstrakte klasseobjektet kan ikke opprettes direkte, men når vi bruker denne abstrakte klassen for å gi visse funksjoner til en baseklasse eller barneklasse, kan det gjøre det ved å lage objektet til baseklassen.

Betydningen av abstrakte klasser

1. Den gir standardfunksjonaliteten til baseklassene.

2. Den definerer et vanlig API for settet med underklasser, nyttig når en tredjepart leverer plugins i et program.

3. Nyttig med stor kode å huske at mange klasser er vanskelig.

syntax

From abc import ABC
Class Educba(ABC):

For å betrakte hvilken som helst klasse som en abstrakt klasse, må klassen arve ABC-metaklass fra den python innebygde abc-modulen. abc-modulen importerer ABC-metaklassen.

Abstrakte metoder i Python

Abstrakte metoder er metodene som deklareres uten implementeringer.

syntax

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

For å definere de abstrakte metodene i en abstrakt klasse, må metoden pyntes med et nøkkelord kalt @abstractmethod dekoratør. @Abstractmethod dekoratøren må importeres fra det python innebygde biblioteket kalt abc.

Hvordan fungerte Abstract Classes i Python?

Python har ikke abstrakte klasser som standard, men har en modul eller et bibliotek som danner basen for å definere abstrakte baseklasser (ABC) og at modulnavnet kalles ABC. Den markerer metodene til baseklassen som den abstrakte baseklassen og produserer deretter konkrete klasser som implementeringer av den abstrakte basen. En metode blir til en abstrakt metode ved hjelp av et dekoratørnøkkelord kalt @abstractmethod.

ABC-modulen brukes til å lage de abstrakte klassene, @ abstractmethod er dekoratøren som brukes til å erklære metoden abstrakt. ABC-modulen etablerer en kontrakt mellom baseklasse og betongklasse.

Abc-modulen gir grunnlag for å definere abstrakte baseklasser (ABC) i Python. Samlingsmodulen har noen konkrete klasser som er avledet fra ABC, og de kan deles videre. Bortsett fra alle disse, inneholder samlingsmodulen også noen ABC som kan brukes til å teste om en klasse eller instans gir et bestemt grensesnitt eller ikke.

Denne modulen inneholder følgende klasse:

klasse abc.ABCMeta

Metaklassen brukes til å definere abstrakte baseklasser (ABC)

Vi bruker en metaklass for å lage 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())

Resultat oppnådd

Dette er en konkret metode

16

16

Dette er en konkret metode

8

12

I eksemplet over er abstrakt-klassen Shape som inneholder en konkret metode som kalles vanlig og to abstrakte metoder som kalles areal og omkrets. Det er to barneklasser og rektangel som arver den abstrakte klassen Form og implementerer den abstrakte metoden.

Implementering gjennom 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 egenskaper

Abstrakte klasser inneholder abstrakte egenskaper sammen med abstrakte metoder definert av @abstractproperty.

Vi kan nå bruke eiendom, eiendom.getter (), eiendom.setter () og eiendom.deleter () med abstrakte klasser.

syntax

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

Dette definerer den skrivebeskyttede egenskapen.

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)

Produksjon:

Kan ikke opprette abstrakt klasseform med abstrakt metodeområde

Firkantet klasse

Konklusjon

Til slutt konkluderer jeg med at abstrakt klasse er en måte å sikre en viss grad av kodekvalitet fordi de håndhever visse standarder og kan redusere mengden duplikatkode som vi skriver. Det etablerer en forbindelse mellom baseklasse og betongklasse. Det gir en enkel implementering av kode. Den definerer en generalisert metodestruktur uten fullstendig implementering. Det gjør programmeringslivet enkelt ved å abstrahere bakgrunnsprosessen og få dem til å fokusere bare på viktige punkter. Det gjør forskningen og forståbarheten mye raskere ved å forstå den vanlige og enkle strukturen i klasser innenfor koden.

Anbefalte artikler

Dette er en guide til Abstract Class in Python. Her diskuterer vi hvordan fungerer abstrakte klasser i Python med viktigheten og metodene med passende eksempler. Du kan også se på følgende artikler for å lære mer -

  1. Python-filoperasjoner
  2. Innkapsling i Python
  3. Looper i Python
  4. Konstruktør i Python
  5. Python-sett
  6. Introduksjon til Abstract Class i PHP