isinstance() to wbudowana funkcja Pythona, która sprawdza, czy obiekt jest instancją określonej klasy lub klasy pochodnej. Służy do bezpiecznego type checkingu, umożliwiając uniknięcie błędów typu w kodzie, szczególnie w dynamicznie typowanym Pythonie.
Przykład w e-commerce
# Przykład w e-commerce: analiza danych zamówień
zamowienia = [
{"id": 1, "produkt": "Laptop", "cena": 4500.0, "ilosc": 1},
{"id": 2, "produkt": "Myszka", "cena": 50, "ilosc": 5},
{"id": 3, "produkt": "Klawiatura", "cena": 200, "ilosc": 2},
{"id": 4, "produkt": "Monitor", "cena": "błąd", "ilosc": 1}, # Błędne dane
]
def oblicz_wartosc_koszyka(zamowienie):
# Sprawdzamy typy przed obliczeniami
if isinstance(zamowienie["cena"], (int, float)):
return zamowienie["cena"] * zamowienie["ilosc"]
print(f"Błąd w zamówieniu {zamowienie['id']}: cena nie jest liczbą")
return 0
wartosci = [oblicz_wartosc_koszyka(z) for z in zamowienia]
print("Wartości koszyków:", wartosci)Kiedy i po co używać isinstance()?
- Walidacja danych wejściowych: W e-commerce dane z API lub baz mogą być niejednorodne – sprawdzaj typy przed przetwarzaniem, unikając wyjątków
TypeError. - Polimorfizm i dziedziczenie: Obsługuj różne klasy pochodne, np.
Product,DigitalProductczyService. - Bezpieczne przetwarzanie list/mieszanych typów: W analizie data science filtruj tylko numeryczne wartości do agregacji.
- Zamiast
type():isinstance()jest lepsze, bo obsługuje dziedziczenie i krotki klas (np.isinstance(x, (int, float))).