Introduction
Encapsulation restricts access to certain attributes to protect data integrity.
Access Modifiers
class BankAccount:
def __init__(self, balance):
self.__balance = balance # Private (name mangling)
self._protected = 0 # Protected (convention)
self.public = 0 # Public
def get_balance(self):
return self.__balance
def deposit(self, amount):
if amount > 0:
self.__balance += amount
return True
return False
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
return True
return False
Property Decorators
class Temperature:
def __init__(self, celsius):
self._celsius = celsius
@property
def celsius(self):
return self._celsius
@celsius.setter
def celsius(self, value):
self._celsius = value
@property
def fahrenheit(self):
return (self._celsius * 9/5) + 32
@fahrenheit.setter
def fahrenheit(self, value):
self._celsius = (value - 32) * 5/9
Practice Problems
- Create a class with private attributes
- Implement getters and setters
- Use @property decorator
- Create read-only properties
- Validate data in setter methods