Programmering nivå 2
Kap 3.4 – Inkapsling och attribut
Skydda objektets data och styr åtkomst med metoder.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Förstå vad inkapsling innebär och varför det är viktigt.
- Känna till hur man markerar privata attribut i Python.
- Kunna använda metoder, getters och setters, för att kontrollera åtkomst till data.
Så här lär du dig bäst
Tänk på inkapsling som att bygga en maskin där vissa delar är synliga och andra dolda. Börja med exemplen och testa att göra attribut privata. Skapa egna metoder som kontrollerar hur data läses och skrivs. Jämför med hur du använt attribut direkt tidigare.
Centrala begrepp
- Inkapsling: att dölja objektets inre data och endast ge åtkomst via metoder.
- Publikt attribut: ett fält som kan nås direkt utifrån.
- Privat attribut: ett fält som är avsett att döljas, ofta skrivet med ett inledande understreck.
- Getter och setter: metoder som används för att läsa eller ändra privata fält.
Inkapsling är en grundsten i OOP eftersom det skyddar objektets inre tillstånd och minskar risken för fel. Det gör också din kod tydligare och mer kontrollerad.
Använda inkapsling i Python
I Python är inget egentligen helt privat, men det är praxis att markera ett attribut som privat med ett
inledande understreck: _.
class BankAccount:
def __init__(self, owner, balance):
self.owner = owner
self._balance = balance # privat attribut
def deposit(self, amount):
if amount > 0:
self._balance += amount
def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount
def get_balance(self):
return self._balance
Här används metoderna deposit(), withdraw() och
get_balance() för att hantera saldot på ett kontrollerat sätt.
En setter är användbar när du vill kontrollera ett nytt värde innan det sparas i objektet. Du kan till exempel stoppa negativa tal, för höga betyg eller andra ogiltiga värden innan de ändrar objektets tillstånd.
account = BankAccount("Emma", 1000)
account.deposit(500)
account.withdraw(200)
print(account.get_balance())
Detta säkerställer att inga negativa uttag kan ske och att balansen skyddas.
Öva: skapa egna inkapslade attribut
- Skapa en klass
Studentmed namnet publikt och betyg som ett privat attribut_grade. - Skriv en metod
set_grade()som bara godkänner betyg mellan 0 och 100. - Skriv en metod
get_grade()som returnerar betyget. - Testa att skapa en elev och ändra betyg med metoden.
Sammanfattning
- Inkapsling handlar om att skydda data och endast ge åtkomst via metoder.
- Python använder understreck
_för att markera privata attribut. - Metoder som
get_ochset_används för att hantera privata fält. - Inkapsling förbättrar säkerhet, läsbarhet och kodens hållbarhet.