Een abstracte klasse is een blauwdruk voor verwante klassen. Het kan niet worden geïnstantieerd, maar is alleen toegankelijk via overerving. Een subklasse die een abstracte klasse erft, is vereist om zijn abstracte methoden te implementeren. Anders zal de compiler een fout markeren.
Abstracte methoden zijn methoden zonder implementatie. Een abstracte klasse kan abstracte methoden of concrete (normale) methoden hebben.
Python ondersteunt niet rechtstreeks abstracte methoden, maar je kunt ze openen via de abc (abstracte basisklasse) module.
De abc-module gebruiken in Python
Om een abstracte klasse in Python te definiëren, moet je: importeren de abc-module.
Zie het voorbeeld hieronder:
van abc importeer ABC
klasse AbstractClassName (ABC):
doorgang
Let op het trefwoord doorgang. Dit sleutelwoord wordt gebruikt om lege code te vervangen. Als u het weglaat, krijgt u een compilatiefout.
Verwant: Zal Julia een bod doen op Python's Throne?
Klassedefinities, methodedefinities, lussen en indien
statements verwachten code-implementaties. Dus als u ze weglaat, krijgt u een compilatiefout. Om dit te voorkomen, gebruik doorgang om de lege code te vervangen.Om een abstracte methode in Python te definiëren, gebruik je de @abstractmethode decorateur:
van abc import ABC, abstracte methode
klasse AbstractClassName (ABC):
@abstractmethode
def abstractMethode (zelf):
doorgang
Op dit punt zou het goed zijn om te vermelden dat - in tegenstelling tot Java - abstracte methoden in Python een implementatie kunnen hebben. Deze implementatie is toegankelijk in de overschrijvende methode met behulp van de Super() methode.
import abc
klasse AbstractClass (ABC):
def __init__(zelf, waarde):
zelf.waarde = waarde
super().__init__()
@abc.abstractmethod
def een_actie (zelf):
print("Dit is de bovenliggende implementatie.")
klasse MijnSubklasse (AbstractClassExample):
def een_actie (zelf):
super().some_action()
print("Dit is de implementatie van de subklasse. ")
x = MijnSubklasse()
x.some_action()
Het is interessant om op te merken dat je een constructor in een abstracte klasse kunt definiëren.
Op regel 9 zie je dat @abc.abstractmethod is gebruikt als de abstracte methode decorateur. Dit is een andere manier om dit te doen dan het vorige formulier. Merk ook op dat regel 1 korter is (import abc) dan de vorige regel 1 import die u hebt gebruikt.
Het is allemaal een kwestie van kiezen. Hoewel velen de tweede methode misschien korter vinden.
Afhandeling van uitzonderingen in Python
Merk op dat er geen manier is om fouten vast te leggen in het bovenstaande codevoorbeeld. Bugs komen vaker voor dan niet, en het hebben van een betrouwbare manier om ze te krijgen kan een game-changer zijn.
Deze gebeurtenissen die de normale programmastroom verstoren, worden "uitzonderingen" genoemd en het beheer ervan wordt "afhandeling van uitzonderingen" genoemd. De volgende op uw Python-leeslijst zou het afhandelen van uitzonderingen moeten zijn.
Bedek uw coderingsbases met Python-uitzonderingen.
Lees volgende
- Programmeren
- Programmeren
- Python
- Programmeertalen
Jerome is een stafschrijver bij MakeUseOf. Hij behandelt artikelen over programmeren en Linux. Hij is ook een crypto-enthousiasteling en houdt de crypto-industrie altijd in de gaten.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren