Programmering med Python åbner mange muligheder for dig, der går ud over enkle scripts. En central komponent i objektorienteret programmering er arbejdet med klasser. De danner grundlaget for objekter og giver dig mulighed for at oprette og administrere komplekse datastrukturer. I denne vejledning vil du lære, hvordan du definerer dine egne klasser i Python for effektivt at udnytte deres egenskaber og metoder.
Vigtigste indsigter
- Klasser er nøglen til objektorienteret programmering i Python.
- En initializer (konstruktor) giver dig mulighed for at definere specifikke egenskaber, når du opretter en klasse.
- Metoder i klasser giver dig mulighed for at indkapsle funktioner, der arbejder på egenskaberne af et objekt.
- Adgang til egenskaber sker via punktoperatoren.
Trin-for-trin vejledning
Lad os begynde med grundlæggene af klasseopbygning i Python. Først skal du definere en ny klasse med nøgleordet class. Du kan gøre dette i din Python-kode som følger:

Her har vi en tom klasse kaldet Medarbejder. Du kan først definere den uden parametre, hvilket betyder, at klassen oprettes uden specifik initialisering. Dette er et vigtigt grundlag for at sikre, at du ikke får fejl, når du senere opretter objekter.
Næste skridt er at oprette et objekt af denne klasse. Det er tilstrækkeligt at bruge klassenavnet og sætte en tom parentes:
I dette tilfælde har vi et objekt Medarbejder, som vi lige har oprettet. Det næste skridt er at udvide klassen med egenskaber. For eksempel kunne du tilføje et navn til klassen Medarbejder.
Først skal du definere en initializer, der fungerer som konstruktor for din klasse. Dette gøres ved hjælp af metoden __init__.

Her ser du, hvordan en __init__-konstruktor defineres. Vi videregiver navnet som parameter og bruger self til at gemme navnet for det aktuelle objekt.
Nu, hvor du har en egenskab, kan du videregive et navn direkte, når du opretter et objekt:

Når du nu opretter objektet deltager med navnet "Jan", bliver navnet gemt i instansen. Gennem autocompletion kan du kontrollere, om navnet er korrekt sat.
For at bruge egenskaberne kan du få adgang til dem ved hjælp af punktoperatoren:

Det er her, du kan få adgang til egenskaberne af dit objekt. I dette tilfælde udskriver du deltagerens navn.
Ud over egenskaber kan du også implementere metoder. Oprettelsen af en metode fungerer på samme måde som at definere en funktion:

Her definerer du metoden tilmeld. Husk igen, at self automatisk videregives som parameter til metoden for at få adgang til instansen. Ved tilmeldingen kunne vi for eksempel udskrive en succeshistorie:

Når du kalder metoden tilmeld, ser det således ud:

Her kalder du metoden på instansen deltager, hvilket giver feedback om tilmeldingen.
Endelig kan vi også videregive parametre til metoder, ligesom ved funktioner. For eksempel en metode afmeld, der forventer en parameter for tidlig afmelding:

Her analyserer du, om deltageren ønsker at melde sig ud tidligt, og giver en tilsvarende meddelelse.
ScreenShot_320
Det viser dig, hvor interaktive dine klasser og metoder kan blive, og hvordan de reagerer på input.
Afslutningsvis bør vi opsummere de grundlæggende principper, vi har lært. Definitionen af klasser handler om at definere attributter og metoder, der er relevante for de tilknyttede objekter. Konstruktoren __init__ er central for at sætte attributter, når objektet oprettes.
Resumé – Opret og brug dine egne klasser i Python
Ved at forstå og anvende disse grundlæggende principper kan du udvikle kraftfulde og fleksible programmer i Python. Du kan oprette klasser, der indkapsler specifikke funktioner og egenskaber for at gøre programmeringen mere brugervenlig og effektiv.
Ofte stillede spørgsmål
Hvordan definerer jeg en klasse i Python?Brug nøgleordet class, efterfulgt af klassens navn og et kolon.
Hvad er formålet med __init__-konstruktøren?Den bruges til at foretage initialiseringer, når et objekt oprettes.
Hvordan får jeg adgang til egenskaber af et objekt?Brug punktoperatoren, efterfulgt af egenskabsnavnet, f.eks. objekt.egenhed.
Kan jeg videregive flere parametre til en metode?Ja, du kan definere metoder, der accepterer flere parametre.
Kan jeg bruge funktioner inden for mine klasser?Ja, metoder er ikke andet end funktioner, der er bundet til en klasse.