Przejdź do treści

Python. Funkcja isinstance(). Sprawdzamy czy obiekt jest instancją klasy

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, DigitalProduct czy Service.
  • 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))).