14. Wszędzie są obiekty!
… bo wszystko w Pythonie jest obiektem! To kolejny sposób organizowania danych. W Pythonie mamy coś podobnego do obiektów JavaScript - słowniki (które już znasz!) oraz prawdziwe obiekty (klasy).
Uwaga: To jest rozszerzenie kursu - obiekty nie są nam niezbędne do tworzenia kolejnych elementów kursu, ale warto wiedzieć, że istnieją! 😊
Słowniki jako “obiekty” - już to znasz!
person = {
'name': 'Natalia',
'age': 27,
'hobby': ['swimming', 'cycling', 'fantasy books']
}
Jak widzisz, słownik przypomina listę, ale zamiast indeksów liczbowych mamy klucze. Klucze to nazwy, które pomagają nam zrozumieć, co przechowujemy.
By odwołać się do jakiegoś elementu słownika, używamy klucza:
print(person['hobby'])
# lub
print(person.get('hobby'))
Do istniejącego słownika możemy dodawać nowe elementy:
person['city'] = 'Poznań'
print(person)
Możemy je także usuwać:
del person['hobby']
# lub
person.pop('hobby')
Zagnieżdżone słowniki
Czasami w słowniku może być inny słownik:
person = {
'name': 'Natalia',
'age': 27,
'hobby': ['swimming', 'cycling', 'fantasy books'],
'city': 'Poznań',
'family': {
'mom': 'Anna',
'dad': 'Paweł',
'sister': 'Karolina'
}
}
Jak wyświetlić imię siostry?
print(person['family']['sister'])
Prawdziwe obiekty - klasy
W Pythonie możemy tworzyć prawdziwe obiekty używając klas. To jak szablon do tworzenia obiektów:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
self.hobbies = []
def add_hobby(self, hobby):
self.hobbies.append(hobby)
def introduce(self):
return f"Cześć! Jestem {self.name} i mam {self.age} lat."
# Tworzenie obiektu
natalia = Person('Natalia', 27)
natalia.add_hobby('swimming')
natalia.add_hobby('cycling')
print(natalia.introduce())
print(f"Hobby: {natalia.hobbies}")
Dlaczego obiekty są takie fajne?
- Organizacja - grupują powiązane dane
- Czytelność -
person['name']
mówi więcej niżdata[0]
- Elastyczność - można łatwo dodawać/usuwać właściwości
Przykład: System książek
library = {
'books': [
{
'title': 'Hobbit',
'author': 'J.R.R. Tolkien',
'year': 1937,
'available': True
},
{
'title': 'Dune',
'author': 'Frank Herbert',
'year': 1965,
'available': False
}
]
}
def find_available_books(library):
available = []
for book in library['books']:
if book['available']:
available.append(book['title'])
return available
print("Dostępne książki:")
for title in find_available_books(library):
print(f"- {title}")
🧪 Zadanie
Stwórz słownik reprezentujący Twoją ulubioną grę:
game = {
'title': 'Nazwa gry',
'genre': 'Gatunek',
'rating': 8.5,
'platforms': ['PC', 'PlayStation', 'Xbox'],
'details': {
'developer': 'Studio deweloperskie',
'release_year': 2023,
'multiplayer': True
}
}
# Wyświetl informacje o grze
def display_game_info(game):
# Twoja implementacja tutaj!
pass
Obiekty (słowniki) to świetny sposób na organizację danych, ale nie są niezbędne! Wszystko, co możesz zrobić z obiektami, możesz też zrobić ze zwykłymi zmiennymi, listami i funkcjami.
Obiekty po prostu sprawiają, że kod jest bardziej czytelny i łatwiejszy do utrzymania w większych projektach! 🚀
🧪 Zadanie
W tym zadaniu pocwiczymy korzystanie z obiektów stworzymy prostą logikę do zarządzania swoją szafą.
Każdy element garderoby będzie prawdziwym obiektem – z własnymi właściwościami i metodami.
👗 Krok 1: Zdefiniuj klasę ClothingItem
Stwórz klasę ClothingItem
, która będzie reprezentować jedno ubranie.
Każdy element powinien mieć:
type
– typ ubrania (np."T-shirt"
,"Jeans"
)color
– kolor (np."czarny"
)size
– rozmiar (np."M"
)season
– sezon, na który się nadaje (np."summer"
,"winter"
,"all"
)washed
– czy ubranie jest czyste (True
lubFalse
)
Dodaj do klasy metody:
describe()
– zwraca opis ubrania, np.:
"Czarny T-shirt w rozmiarze M na lato. Czysty."
wash()
– ustawiawashed
naTrue
wear()
– ustawiawashed
naFalse
🧤 Krok 2: Wypełnij swoją szafę
Stwórz kilka obiektów i dodaj je do listy wardrobe
, np.:
shirt = ClothingItem("T-shirt", "black", "M", "summer", True)
jeans = ClothingItem("Jeans", "blue", "L", "all", False)
wardrobe = [shirt, jeans]
Wyświetl opisy ubrań i „ubierz” niektóre z nich (czyli użyj wear()), a następnie sprawdź, które ubrania trzeba wyprać.
🧼 Krok 3: Dodatkowe funkcje
Dodaj jedną lub więcej funkcji, które pomogą zarządzać szafą:
def show_clean_clothes(wardrobe):
# wypisz tylko czyste ubrania
pass
def show_season_clothes(wardrobe, season):
# wypisz ubrania odpowiednie na dany sezon
pass