Innkapsling
Utforsk avanserte OOP-konsepter.
Innkapsling er en gratis leksjon i Python For Kids på CoddyKit. Dette er leksjon 4 av 5. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python For Kids, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python For Kids inneholder totalt 5 leksjoner.
Kapsling
Velkommen tilbake til leksjonen om objektorientert programmering (OOP)! I dag skal vi lære om kapsling i Python, et viktig konsept som bidrar til å beskytte dataene og metodene dine i klasser.

Hva er kapsling?
Kapsling er konseptet med å samle data (attributter) og metoder (funksjoner) som opererer på disse dataene, i en enkelt enhet som kalles en klasse. Det begrenser også direkte tilgang til enkelte av objektets komponenter, noe som betyr at den interne representasjonen av et objekt skjules for omverdenen.
- Dataskjuling: Beskyttelse av objektets interne tilstand mot utilsiktet påvirkning.
- Tilgangskontroll: Definering av hvordan dataene og metodene kan brukes eller endres.
Kapsling sørger for at objekter kontrollerer sine egne data og bare eksponerer det som er nødvendig.
Tilgangsmodifikatorer
I Python implementeres kapsling ved hjelp av tilgangsmodifikatorer som styrer synligheten til klassemedlemmer (attributter og metoder). Det finnes tre typer tilgangsmodifikatorer:
- Offentlig: Tilgjengelig fra hvor som helst.
- Beskyttet: Tilgjengelig i klassen og underklassene dens.
- Privat: Bare tilgjengelig i selve klassen.
La oss se hvordan du bruker disse tilgangsmodifikatorene i Python.
Offentlige attributter og metoder
Offentlige medlemmer er tilgjengelige utenfra klassen. Som standard er alle attributter og metoder offentlige, med mindre noe annet er angitt.
Eksempel:
# 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!
Beskyttede attributter og metoder
Beskyttede medlemmer angis med ett enkelt understrekstegn (_) som prefiks. De er tilgjengelige i klassen og underklassene dens, men bør ikke brukes direkte utenfra klassen.
Eksempel:
# 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
Private attributter og metoder
Private medlemmer angis med to understrekstegn (__) som prefiks. De er bare tilgjengelige i selve klassen og kan ikke brukes direkte utenfra klassen.
Eksempel:
# 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
Hvorfor bruke kapsling?
Kapsling gir flere fordeler:
- Kontroll: Kontroller hvordan dataene brukes eller endres.
- Sikkerhet: Beskytt objektets interne tilstand mot utilsiktede endringer.
- Vedlikehold: Gjør koden enklere å vedlikeholde og mindre utsatt for feil.
Kapsling bidrar til å bygge robuste og sikre applikasjoner.
Eksempel på innkapsling: Car-klassen
La oss opprette en Car-klasse som bruker innkapsling for å beskytte attributtene og metodene sine.
Kode:
# 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
Godt jobbet!
De har lært hvordan De kan bruke innkapsling i Python for å beskytte dataene og metodene i klasser. Innkapsling hjelper Dem med å kontrollere tilgangen til dataene i objektene, slik at programmene blir sikrere og enklere å vedlikeholde. Fortsett å øve ved å utforme klasser med passende tilgangsmodifikatorer for å utvikle programmeringsferdighetene Deres!

Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 22
- Leksjoner
- 94
Ofte stilte spørsmål
Er leksjonen «Innkapsling» gratis?
Ja – hele teksten i «Innkapsling» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python For Kids-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python For Kids inneholder totalt 5 leksjoner.
Hva lærer jeg i «Innkapsling»?
Utforsk avanserte OOP-konsepter. Du øver på Python For Kids med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Python For Kids?
Ingen tidligere erfaring er nødvendig. Python For Kids på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 5.
Hvor lang tid tar leksjonen «Innkapsling»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Python For Kids-leksjonen?
Ja. Alle Python For Kids-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.