Inkapseling
Verken geavanceerde OOP-concepten.
Inkapseling is een gratis Python For Kids-les op CoddyKit. Dit is les 4 van 5. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python For Kids. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python For Kids bevat in totaal 5 lessen.
Inkapseling
Welkom terug bij de les Objectgeoriënteerd programmeren (OOP)! Vandaag leren we over inkapseling in Python, een belangrijk concept dat helpt om je gegevens en methoden binnen klassen te beschermen.

Wat is inkapseling?
Inkapseling is het concept waarbij gegevens (attributen) en methoden (functies) die met deze gegevens werken, worden gebundeld in één geheel, een klasse genoemd. Ook wordt directe toegang tot bepaalde onderdelen van een object beperkt. Hierdoor blijft de interne voorstelling van een object verborgen voor de buitenwereld.
- Gegevens verbergen: De interne toestand van een object beschermen tegen onbedoelde beïnvloeding.
- Toegangsbeheer: Bepalen hoe gegevens en methoden kunnen worden benaderd of gewijzigd.
Inkapseling zorgt ervoor dat objecten hun eigen gegevens beheren en alleen het noodzakelijke beschikbaar maken.
Toegangsmodificatoren
In Python wordt inkapseling geïmplementeerd met toegangsmodificatoren om de zichtbaarheid van onderdelen van een klasse (attributen en methoden) te beheren. Er zijn drie typen toegangsmodificatoren:
- Openbaar: Overal toegankelijk.
- Beschermd: Toegankelijk binnen de klasse en haar subklassen.
- Privé: Alleen toegankelijk binnen de klasse zelf.
Laten we bekijken hoe je deze toegangsmodificatoren in Python gebruikt.
Openbare attributen en methoden
Openbare onderdelen zijn toegankelijk buiten de klasse. Standaard zijn alle attributen en methoden openbaar, tenzij anders aangegeven.
Voorbeeld:
# Defines the Person class with public attributes and methods
class Person:
def __init__(self, name, age):
self.name = name # Public attribute
self.age = age # Public attribute
def greet(self):
print("Hello, my name is " + self.name + "!") # Public method
# Creates an object of the Person class
person1 = Person("Alice", 30)
# Accesses public attributes and methods
print(person1.name) # Output: Alice
person1.greet() # Output: Hello, my name is Alice!
Beschermde attributen en methoden
Beschermde onderdelen worden aangegeven met een enkel onderstrepingsteken (_) als voorvoegsel. Ze zijn toegankelijk binnen de klasse en haar subklassen, maar mogen niet rechtstreeks van buiten de klasse worden benaderd.
Voorbeeld:
# Defines the Employee class with protected attributes and methods
class Employee:
def __init__(self, name, salary):
self._name = name # Protected attribute
self._salary = salary # Protected attribute
def _increase_salary(self, amount):
self._salary += amount # Protected method
print(self._name + "'s new salary is " + str(self._salary))
# Creates an object of the Employee class
employee1 = Employee("Bob", 50000)
# Accesses protected attributes and methods (not recommended)
print(employee1._name) # Output: Bob
employee1._increase_salary(5000) # Output: Bob's new salary is 55000
Privéattributen en -methoden
Privéonderdelen worden aangegeven met een dubbel onderstrepingsteken (__) als voorvoegsel. Ze zijn alleen toegankelijk binnen de klasse zelf en kunnen niet rechtstreeks van buiten de klasse worden benaderd.
Voorbeeld:
# Defines the BankAccount class with private attributes and methods
class BankAccount:
def __init__(self, owner, balance):
self.__owner = owner # Private attribute
self.__balance = balance # Private attribute
def deposit(self, amount):
self.__balance += amount # Modifies private attribute
print("Deposited:", amount)
self.__show_balance()
def __show_balance(self):
print("Current Balance:", self.__balance) # Private method
# Creates an object of the BankAccount class
account1 = BankAccount("Charlie", 1000)
# Attempts to access private attributes and methods (will cause errors)
# print(account1.__owner) # AttributeError
# account1.__show_balance() # AttributeError
# Uses public methods to interact with private attributes
account1.deposit(500) # Output:
# Deposited: 500
# Current Balance: 1500
Waarom inkapseling gebruiken?
Inkapseling biedt verschillende voordelen:
- Beheer: Bepalen hoe de gegevens worden benaderd of gewijzigd.
- Beveiliging: De interne toestand van een object beschermen tegen onbedoelde wijzigingen.
- Onderhoudbaarheid: De code wordt eenvoudiger te onderhouden en bevat minder fouten.
Inkapseling helpt bij het bouwen van robuuste en veilige toepassingen.
Voorbeeld van inkapseling: de klasse Car
We maken een klasse Car die inkapseling gebruikt om de kenmerken en methoden ervan te beschermen.
Code:
# Defines the Car class with encapsulated attributes and methods
class Car:
def __init__(self, make, model, year):
self.make = make # Public attribute
self.model = model # Public attribute
self.__year = year # Private attribute
def get_year(self):
return self.__year # Public method to access private attribute
def set_year(self, year):
if year > 0:
self.__year = year # Public method to modify private attribute
print("Year updated to", self.__year)
else:
print("Invalid year!")
def __display_info(self):
print(self.make, self.model, self.__year) # Private method
def show_info(self):
self.__display_info() # Public method that calls a private method
# Creates an object of the Car class
car1 = Car("Tesla", "Model S", 2020)
# Accesses public attributes and methods
print(car1.make) # Output: Tesla
print(car1.get_year()) # Output: 2020
# Modifies the private attribute using a public method
car1.set_year(2021) # Output: Year updated to 2021
# Calls a public method that interacts with a private method
car1.show_info() # Output: Tesla Model S 2021
# Attempts to access private attributes and methods directly (will cause errors)
# print(car1.__year) # AttributeError
# car1.__display_info() # AttributeError
# Defines the Student class with encapsulated attributes
class Student:
def __init__(self, name, grade):
self.name = name # Public attribute
self.__grade = grade # Private attribute
def get_grade(self):
return self.__grade # Public method to access private attribute
def set_grade(self, grade):
if 0 <= grade <= 100:
self.__grade = grade # Updates the grade
else:
print("Invalid grade!")
# Creates an object of the Student class
student1 = Student("Diana", 85)
# Accesses and modifies the grade using public methods
print(student1.get_grade()) # Output: 85
student1.set_grade(90)
print(student1.get_grade()) # Output: 90
# Attempts to access the private attribute directly (will cause an error)
# print(student1.__grade) # AttributeError
Goed gedaan!
Je hebt geleerd hoe je inkapseling in Python gebruikt om je gegevens en methoden binnen klassen te beschermen. Met inkapseling regel je de toegang tot de gegevens van je object, waardoor je programma's veiliger en beter onderhoudbaar worden. Blijf oefenen door klassen te ontwerpen met geschikte toegangsmodificatoren om je programmeervaardigheden te verbeteren!

Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 22
- Lessen
- 94
Veelgestelde vragen
Is de les “Inkapseling” gratis?
Ja — de volledige tekst van “Inkapseling” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python For Kids wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python For Kids bevat in totaal 5 lessen.
Wat leer ik in “Inkapseling”?
Verken geavanceerde OOP-concepten. Je oefent met Python For Kids door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python For Kids te beginnen?
Ervaring vooraf is niet nodig. Python For Kids op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 5.
Hoe lang duurt de les “Inkapseling”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python For Kids?
Ja. Elke les over Python For Kids bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.