A Python absztrakt osztályának áttekintése

Az absztrakt osztályok azok a osztályok, amelyek deklaráltak, de nem tartalmaznak implementációkat. Csak örökölhető. Az absztrakt osztályok sablonként működnek az alosztályok számára. Az absztrakt osztályokat nem lehet azonnal megvalósítani, és alosztályokra van szükség az elvont módszerek megvalósításának biztosításához. Alosztályokra van szükség az absztrakt osztályokban meghatározott absztrakt módszerek megvalósításának biztosításához. Az absztrakt osztályok egy vagy több elvont módszert tartalmaznak. Az absztrakt módszerek azok a módszerek, amelyeket végrehajtás nélkül deklarálnak. Nem hozhatunk létre közvetlenül az absztrakt osztály objektumát, de örökölhetjük az alaposztálynak, majd létrehozhatjuk az objektumot. Ebben a témában megismerjük az abszolút osztályt a Pythonban.

Mind az absztrakt osztály, mind a beton osztály beletartozhat az absztrakt osztályba. Egy absztrakt osztály használatával meghatározhatjuk a módszerek általános szerkezetét anélkül, hogy minden módszer teljes megvalósítását biztosan tennénk. Az absztrakt osztályban meghatározott absztrakt módszerek általában nem tartalmazzák a testet, de lehetséges az absztrakt módszerek végrehajtása az absztrakt osztályban, és ha valamilyen alosztály származik az absztrakt osztályból, akkor biztosítani kell az ilyen módszerek megvalósítását. . Ha valamely elvont módszert nem hajt végre a származtatott osztály, akkor hibát okoz. Az absztrakt osztályobjektum nem hozható létre közvetlenül, de ha ezt az absztrakt osztályt bizonyos funkciók biztosítására használjuk egy alaposztályhoz vagy gyermekosztályhoz, akkor ezt megteheti az alaposztály objektumának létrehozásával.

Az absztrakt osztályok fontossága

1. Ez biztosítja az alaposztályok alapértelmezett funkcionalitását.

2. Meghatározza az alkategóriák közös API-ját, amely akkor hasznos, ha egy harmadik fél plug-ineket nyújt egy alkalmazásban.

3. Nagyon hasznos volt, mivel sok osztály emlékezése nehéz.

Szintaxis

From abc import ABC
Class Educba(ABC):

Annak érdekében, hogy bármely osztályt elvont osztálynak lehessen tekinteni, az osztálynak örökölnie kell az ABC metaosztályt a python beépített abc moduljából. Az abc modul importálja az ABC metaosztályt.

Absztrakt módszerek Pythonban

Az absztrakt módszerek azok a módszerek, amelyeket végrehajtás nélkül deklarálnak.

Szintaxis

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

Az absztrakt módszerek absztrakt osztályban történő meghatározásához a módszert egy @ab Abstractmethod dekorator nevű kulcsszóval kell díszíteni. A @ab Abstractmethod dekorátort az abc nevű python beépített könyvtárából kell importálni.

Hogyan működtek az absztrakt osztályok a Pythonban?

A Python alapértelmezés szerint nem tartalmaz elvont osztályokat, de van egy modulja vagy könyvtára, amely alapot nyújt az absztrakt alaposztályok (ABC) meghatározásához, és a modul nevét ABC-nek hívják. Megjelöli az alap osztály módszerét, mint elvont alap osztály, majd konkrét osztályokat állít elő, mint az elvont alap megvalósítása. Egy módszer elvont módszerré válik, a @ab abstractmethod elnevezésű dekorátor kulcsszó segítségével.

Az abszolút osztályok létrehozásához az ABC modult kell használni, a @ abstractmethod az a módszer, amellyel deklarálható a módszer elválasztása. Az ABC modul szerződést köt az alap osztály és a beton osztály között.

Az abc modul adja az alapot az absztrakt alaposztályok (ABC) meghatározásához Pythonban. A gyűjteménymodul tartalmaz néhány konkrét osztályt, amelyek az ABC-ből származnak, és tovább oszthatók. Mindezeken kívül a gyűjteménymodul tartalmaz néhány ABC-t is, amelyek segítségével tesztelhető, hogy egy osztály vagy példány rendelkezik-e egy adott felülettel.

Ez a modul a következő osztályt nyújtja:

osztály abc.ABCMeta

A metaklasszt az abszolút alaposztályok (ABC) meghatározására használják.

Metaklasszt használunk egy elvont alaposztály létrehozásához.

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

Példa

# 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())

Teljesítmény megszerzett

Ez egy konkrét módszer

16

16

Ez egy konkrét módszer

8

12

A fenti példában az absztrakt osztály az alak, amely egy konkrét módszert, az úgynevezett közönséges és két elvont módszert, az úgynevezett területet és kerületet tartalmaz. Két olyan gyermekosztály van négyzet és téglalap, amelyek öröklik az absztrakt osztály alakját és végrehajtják az absztrakt módszert.

Végrehajtás alosztályozáson keresztül:

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))

Absztrakt tulajdonságok

Az absztrakt osztályok absztrakt tulajdonságokat tartalmaznak, valamint az @ab Anotproperty által meghatározott absztrakt módszerekkel.

Most már használhatjuk az property, property.getter (), property.setter () és property.deleter () absztrakt osztályokat.

Szintaxis

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

Ez határozza meg a csak olvasható tulajdonságot.

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)

Kimenet:

Az absztrakt osztály alakját nem lehet azonnalivá tenni absztrakt módszerrel

Négyzet alakú osztály

Következtetés

Végül arra a következtetésre jutottam, hogy az absztrakt osztály a kódminőség bizonyos szintjének biztosítása, mivel betartják bizonyos szabványokat, és csökkenthetik az általunk írt másolatú kód mennyiségét. Összekapcsolást hoz létre az alap osztály és a beton osztály között. Ez a kód egyszerű végrehajtását biztosítja. Meghatározza a módszerek általános szerkezetét a teljes végrehajtás nélkül. Ez megkönnyíti a programozó életét azáltal, hogy kivonja a háttérfolyamatot, és arra készteti őket, hogy csak a fontos pontokra összpontosítsanak. Sokkal gyorsabbá teszi a kutatást és az érthetőséget, ha megértjük az osztályok általános és egyszerű szerkezetét a kódban.

Ajánlott cikkek

Ez egy útmutató a Python absztrakt osztályához. Itt tárgyaljuk, hogyan működnek az absztrakt osztályok Pythonban, a fontossággal és a módszerekkel, megfelelő példákkal. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. Python fájlműveletek
  2. Beágyazás a Pythonba
  3. Hurok a Pythonban
  4. Kivitelező Pythonban
  5. Python készletek
  6. Bevezetés a PHP absztrakt osztályába

Kategória: