Classes vormen de kern van objectgeoriënteerd programmeren in Python. Ze bieden een manier om gegevens en functies samen te voegen in één enkel object. Dit hoofdstuk legt uit wat classes zijn, hoe je ze kunt gebruiken om objecten (instanties van classes) te maken, en hoe je functies binnen een class definieert die gebruik maken van de gegevens die bij die objecten horen.
Een class is een blauwdruk of sjabloon voor het maken van objecten. Objecten zijn specifieke exemplaren van die class en bevatten zowel gegevens (attributen) als functies (methoden) die die gegevens kunnen gebruiken.
__init__ MethodeLaten we beginnen met het maken van een eenvoudige class genaamd Persoon. Deze class zal gegevens bevatten over een persoon, zoals hun naam en leeftijd.
Voorbeeld:
class Persoon:
def __init__(self, naam, leeftijd):
self.naam = naam # Attribuut 'naam'
self.leeftijd = leeftijd # Attribuut 'leeftijd'
Uitleg:
class Persoon:: Dit is de definitie van de class Persoon. Hierin geef je aan wat elke Persoon moet bevatten.__init__ Methode: Dit is een speciale functie die wordt aangeroepen wanneer een nieuw object van de class wordt gemaakt. In dit geval worden de attributen naam en leeftijd ingesteld op basis van de waarden die bij het maken van de instantie worden doorgegeven.self.naam = naam: self verwijst naar het specifieke object dat is gemaakt. naam is een attribuut van dat object en het wordt ingesteld op de waarde die bij het aanroepen van de class wordt doorgegeven.Nu we de class hebben gedefinieerd, kunnen we instanties van deze class maken, oftewel objecten. Een object is een specifiek voorbeeld van een class met zijn eigen unieke gegevens.
Voorbeeld:
# Twee instanties (objecten) van de class Persoon maken
persoon1 = Persoon("Alice", 30)
persoon2 = Persoon("Bob", 25)
# Toegang tot de attributen van de objecten
print(persoon1.naam) # Output: Alice
print(persoon1.leeftijd) # Output: 30
print(persoon2.naam) # Output: Bob
print(persoon2.leeftijd) # Output: 25
Uitleg:
persoon1 = Persoon("Alice", 30): Hier maken we een object persoon1 van de class Persoon. Het object persoon1 heeft de naam “Alice” en de leeftijd 30.persoon2 = Persoon("Bob", 25): Hier maken we een ander object persoon2, met de naam “Bob” en de leeftijd 25.persoon1.naam en persoon1.leeftijd aan te roepen, kunnen we de naam en leeftijd van persoon1 opvragen. Elk object heeft zijn eigen set attributen, onafhankelijk van andere objecten.Dit is een cruciaal concept dat vaak verwarrend is voor beginners:
Stel je een class voor als een recept voor het bakken van een cake. Het recept (de class) beschrijft hoe je de cake moet maken, maar de cake zelf (de instantie) wordt pas echt als je het recept volgt en de ingrediënten gebruikt.
Net zoals een class attributen kan hebben, kan het ook functies (methoden) hebben. Deze functies kunnen werken met de attributen van het object.
Voorbeeld:
class Persoon:
def __init__(self, naam, leeftijd):
self.naam = naam
self.leeftijd = leeftijd
def begroet(self):
return f"Hallo, mijn naam is {self.naam} en ik ben {self.leeftijd} jaar oud."
# Twee instanties van de class Persoon maken
persoon1 = Persoon("Alice", 30)
persoon2 = Persoon("Bob", 25)
# Aanroepen van de methoden
print(persoon1.begroet()) # Output: Hallo, mijn naam is Alice en ik ben 30 jaar oud.
print(persoon2.begroet()) # Output: Hallo, mijn naam is Bob en ik ben 25 jaar oud.
Uitleg:
begroet methode binnen de Persoon class is een functie die wordt aangeroepen op een specifiek object. Deze methode kan werken met de attributen van dat object.begroet methode retourneert een string die de naam en leeftijd van de persoon bevat.self ArgumentHet self argument is een verwijzing naar het specifieke object dat de methode aanroept. Het wordt automatisch door Python doorgegeven en stelt de methode in staat om de attributen van het object te gebruiken en te wijzigen.
Voorbeeld:
class Persoon:
def __init__(self, naam, leeftijd):
self.naam = naam
self.leeftijd = leeftijd
def verjaard(self):
self.leeftijd += 1 # Verhoog de leeftijd met 1
# Een instantie van de class Persoon maken
persoon1 = Persoon("Alice", 30)
# Voor de verjaardag
print(persoon1.leeftijd) # Output: 30
# Methode aanroepen om de leeftijd te verhogen
persoon1.verjaard()
# Na de verjaardag
print(persoon1.leeftijd) # Output: 31
Uitleg:
self.leeftijd += 1: Met self verwijzen we naar het object dat de methode aanroept, in dit geval persoon1. De leeftijd van persoon1 wordt verhoogd met 1.Persoon worden hierdoor niet beïnvloed.AutoMaak een class Auto die de attributen merk en bouwjaar heeft. Voeg een methode toon_info toe die de informatie over de auto afdrukt in de vorm van “Merk: [merk], Bouwjaar: [bouwjaar]”. Maak daarna twee objecten van deze class en roep de toon_info methode voor beide objecten aan.
StudentMaak een class Student met de attributen naam en studentnummer. Voeg een methode beschrijving toe die de naam en het studentnummer van de student teruggeeft. Maak drie objecten van de class en druk de beschrijving voor elk object af.
BoekMaak een class Boek met de attributen titel, auteur, en jaar. Voeg een methode beschrijving toe die de titel, auteur, en het jaar van het boek retourneert. Maak twee objecten van de class en druk de beschrijving voor elk boek af.
HuisdierMaak een class Huisdier met de attributen naam, soort, en leeftijd. Voeg een methode beschrijving toe die de naam, soort, en leeftijd van het huisdier afdrukt. Maak drie objecten van de class en roep de beschrijving methode voor elk huisdier aan.
RekeningMaak een class Rekening met de attributen rekeningnummer en saldo. Voeg methoden toe om geld op de rekening te storten (storten) en om geld van de rekening op te nemen (opnemen). Zorg ervoor dat je bij het opnemen van geld controleert of het saldo voldoende is. Maak twee objecten van de class en voer een aantal stortingen en opnames uit.
Maak een class ProjectGroep waarin meerdere Student objecten worden beheerd. Voeg functies toe om een student aan een projectgroep toe te voegen, de gemiddelde leeftijd van de groep te berekenen, en om de namen van alle studenten in de groep af te drukken.
Maak een class Eigenaar die een lijst van Huisdier objecten bevat. De class moet methoden bevatten om huisdieren toe te voegen en om alle huisdieren van een eigenaar af te drukken. De huisdieren zelf hebben een naam, soort en leeftijd. De class bevat ook een methode om die info op het scherm te tonen.
Maak een class Bank die meerdere Rekening objecten beheert. Voeg methoden toe om een nieuwe rekening te openen, geld op een rekening te storten, geld van een rekening op te nemen en om de gegevens van alle rekeningen in de bank te tonen.