Om du letar efter en lätt att följa guide om abstrakta klasser i Python, har du kommit till rätt ställe.
En abstrakt klass är en ritning för relaterade klasser. Det kan inte instansieras utan kan bara nås genom arv. En underklass som ärver en abstrakt klass krävs för att implementera dess abstrakta metoder. Annars kommer kompilatorn att flagga ett fel.
Abstrakta metoder är metoder utan implementering. En abstrakt klass kan ha abstrakta metoder eller konkreta (normala) metoder.
Python stöder inte direkt abstrakta metoder, men du kan komma åt dem via abc (abstrakt basklass) modul.
Använder abc-modulen i Python
För att definiera en abstrakt klass i Python måste du importera abc-modulen.
Se exemplet nedan:
from abc import ABC
class AbstractClassName(ABC):
pass
Lägg märke till nyckelordet passera. Detta nyckelord används för att stå för tom kod. Att utelämna det kommer att ge ett kompileringsfel.
Klassdefinitioner, metoddefinitioner, loopar och om uttalanden förväntar sig kodimplementeringar. Så att utelämna dem ger ett kompileringsfel. För att undvika detta, använd passera för att ersätta den tomma koden.
För att definiera en abstrakt metod i Python, använd @abstraktmetod dekoratör:
from abc import ABC, abstractmethod
class AbstractClassName(ABC):
@abstractmethod
def abstractMethod(self):
pass
Vid det här laget skulle det vara bra att nämna att – till skillnad från Java – kan abstrakta metoder i Python ha en implementering.. Denna implementering kan nås i den överordnade metoden med hjälp av super() metod.
import abc
class AbstractClass(ABC):
def __init__(self, value):
self.value = value
super().__init__()
@abc.abstractmethod
def some_action(self):
print("This is the parent implementation.")
class MySubclass(AbstractClassExample):
def some_action(self):
super().some_action()
print("This is the subclass implementation. ")
x = MySubclass()
x.some_action()
Det är intressant att notera att du kan definiera en konstruktor i en abstrakt klass.
På rad 9 kan du observera det @abc.abstractmetod har använts som den abstrakta metoden dekoratör. Det här är ett annat sätt att göra det än den tidigare formen. Observera också att rad 1 är kortare (import abc) än den tidigare rad 1-importen som du använde.
Allt är en fråga om val. Men många kanske tycker att den andra metoden är kortare.
Undantagshantering i Python
Observera att det inte finns något sätt att fånga fel i kodexemplet ovan. Buggar uppstår oftare än inte, och att ha ett tillförlitligt sätt att få tag på dem kan vara en spelomvandlare.
Dessa händelser som stör normalt programflöde kallas “undantag”, och att hantera dem kallas “undantagshantering”. Nästa på din Python-läslista bör vara undantagshantering.
Om författaren
Jerome Davidson (33 artiklar publicerade)
Jerome är personalskribent på MakeUseOf. Han täcker artiklar om programmering och Linux. Han är också en kryptoentusiast och håller alltid koll på kryptoindustrin.
Mer från Jerome Davidson
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, free e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera
