type() i isinstance() w Python z przykładami

⚡ Inteligentne podsumowanie

Python Funkcje type() i isinstance() to wbudowane funkcje sprawdzające klasę obiektu. Funkcja type() zwraca dokładny typ, natomiast isinstance() sprawdza, czy obiekt należy do klasy, czy do krotki klas. Obie funkcje są pokazane tutaj wraz z przykładami.

  • 🔍 typ(): Zwraca dokładną klasę obiektu, taką jak str, int lub list.
  • isinstance(): Sprawdza, czy obiekt jest instancją danej klasy i zwraca wartość True lub False.
  • 🧩 Typ trzyargumentowy(): type(name, bases, dict) dynamicznie tworzy zupełnie nowy obiekt klasy.
  • 🌳 Podklasy: isinstance() zwraca True dla podklas; type() sprawdza tylko dokładną klasę.
  • 🎯 Przypadków użycia: Sprawdź poprawność typów danych wejściowych, zmiennych debugowania i logiki rozgałęzień według typu obiektu.
  • 🤖 Pomoc AI: Narzędzia sztucznej inteligencji, takie jak Copilot, generują na żądanie sprawdzenia type() i isinstance().

type() i isinstance() w Python

Co to jest type() w Python?

Python ma wbudowaną funkcję o nazwie type(), która pomaga znaleźć typ klasy zmiennej podanej jako dane wejściowe. Na przykład, jeśli danymi wejściowymi jest ciąg znaków, wynik otrzymasz jako , dla listy, tak będzie itp.

Za pomocą polecenia type() możesz przekazać pojedynczy argument, a zwracaną wartością będzie typ klasy podanego argumentu, przykład: type(obiekt).

Możliwe jest także przekazanie trzech argumentów do type(), tj. type(name, bases, dict), w takim przypadku zwróci Ci nowy obiekt typu.

Składnia typu()

type() można używać na dwa sposoby, jak pokazano poniżej:

 type(object)
type(namr, bases, dict)

Parametry: typ (obiekt)

  • obiekt: Jest to parametr obowiązkowy. Jeśli jest to tylko parametr przekazany do type(), wówczas zwróci on typ parametru.

Parametry: type(nazwa, podstawy, dykt)

  • nazwa: nazwa klasy.
  • podstawy: (opcjonalnie). Jest to parametr opcjonalny i jest to klasa bazowa
  • dykt: (opcjonalnie). Jest to parametr opcjonalny i jest to przestrzeń nazw zawierająca definicję klasy.

Wartość zwracana

Jeśli obiekt jest jedynym parametrem przekazanym do funkcji type(), zwróci ona typ obiektu.

Jeśli parametry przekazane do type to typ (obiekt, podstawy, dykt), w takim przypadku zwróci obiekt nowego typu.

Przykład typu()

W tym przykładzie mamy wartość ciągu, liczbę, wartość zmiennoprzecinkową, liczbę zespoloną, listę, krotkę, słownik i zestaw. Użyjemy zmiennych z typem, aby zobaczyć wynik dla każdej z nich.

str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}

print("The type is : ",type(str_list))
print("The type is : ",type(age))
print("The type is : ",type(pi))
print("The type is : ",type(c_num))
print("The type is : ",type(my_list))
print("The type is : ",type(my_tuple))
print("The type is : ",type(my_dict))
print("The type is : ",type(my_set))

Wyjście:

The type is :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

Przykład: użycie type() dla obiektu klasy.

Kiedy sprawdzasz obiekt utworzony z klasy za pomocą type(), zwraca on typ klasy wraz z nazwą klasy. W tym przykładzie utworzymy klasę i sprawdzimy typ obiektu utworzony na podstawie testu klasy.

class test:
    s = 'testing'

t = test()
print(type(t))

Wyjście:

<class '__main__.test'>

Przykład: użycie nazwy, baz i słownika w type()

Typ można również wywołać za pomocą składni: type(name, bases, dict).

Trzy parametry przekazane do type()ie, name, bases i dict to komponenty tworzące definicję klasy. Nazwa reprezentuje nazwę klasy, bases to klasa bazowa, a dict to słownik atrybutów klasy bazowej.

W tym przykładzie użyjemy wszystkich trzech parametrów, tj. name, bases i dict w type().

Przykład:

class MyClass:
  x = 'Hello World'
  y = 50

t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))

Wyjście:

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

Przekazanie wszystkich trzech argumentów do funkcji type() ułatwia zainicjowanie nowej klasy z atrybutami klasy bazowej.

Czym jest isinstance() w Python?

Python isinstancja jest częścią Wbudowane funkcje Pythona. Python Funkcja isinstance() przyjmuje dwa argumenty i zwraca wartość true, jeśli pierwszy argument jest instancją informacji o klasie podaną jako drugi argument.

Składnia isinstancja()

isinstance(object, classtype)

Parametry

  • object: Obiekt, którego instancję porównujesz z typem klasy. Zwróci true, jeśli typ pasuje, w przeciwnym razie false.
  • typ klasy: typ lub klasa lub krotka typów i/lub klas.

Wartość zwracana

Zwróci wartość true, jeśli obiekt jest instancją typu klasy, i false, jeśli nie.

Przykłady isinstance()

W tej sekcji przestudiujemy różne przykłady, aby nauczyć się funkcji isinstancja()

Przykład: isinstance() Sprawdzanie liczby całkowitej

Poniższy kod porównuje wartość całkowitą 51 z typem int. Zwróci wartość true, jeśli typ 51 będzie pasował do typu int, w przeciwnym wypadku będzie false.

age = isinstance(51,int)
print("age is an integer:", age)

Wyjście:

age is an integer: True

Przykład: isinstance() Kontrola pływaka

W tym przykładzie porównamy wartość float z typem float, tj. wartość 3.14 zostanie porównana z typem float.

pi = isinstance(3.14,float)
print("pi is a float:", pi)

Wyjście:

pi is a float: True

Przykład: isinstance() sprawdzanie ciągu

message = isinstance("Hello World",str)
print("message is a string:", message)

Wyjście:

message is a string: True

Przykład: isinstance() Sprawdzanie krotki

Kod sprawdza krotkę (1,2,3,4,5) z typem krotki. Zwróci wartość true, jeśli podane dane wejściowe są typu krotka, i false, jeśli nie.

my_tuple = isinstance((1,2,3,4,5),tuple)
print("my_tuple is a tuple:", my_tuple)

Wyjście:

my_tuple is a tuple: True

Przykład: isinstance() Ustaw kontrolę

Kod sprawdza zestaw ({1,2,3,4,5}, z ustawionym typem. Zwróci wartość true, jeśli podane dane wejściowe są typu set, i false, jeśli nie.

my_set = isinstance({1,2,3,4,5},set)
print("my_set is a set:", my_set)

Wyjście:

my_set is a set: True

Przykład: sprawdzenie listy isinstance().

Kod sprawdza listę [1,2,3,4,5] z listą typów. Zwróci wartość true, jeśli podane dane wejściowe są typu list, i false, jeśli nie.

my_list = isinstance([1,2,3,4,5],list)
print("my_list is a list:", my_list)

Wyjście:

my_list is a list: True

Przykład: sprawdzanie dyktowania isinstance().

Kod sprawdza, czy istnieje dykt({„A”:”a”, „B”:”b”, „C”:”c”, „D”:”d”}, z typem dykt. Zwróci wartość true, jeśli podane dane wejściowe są typu dict i false, jeśli nie.

my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"},dict)
print("my_dict is a dict:", my_dict)

Wyjście:

my_dict is a dict: True

Przykład: test isinstance() w klasie

Kod pokazuje sprawdzenie typu klasy za pomocą isinstance(). Obiekt klasy jest porównywany z nazwą klasy wewnątrz isinstance(). Zwraca true, jeśli obiekt należy do klasy i false w przeciwnym wypadku.

class MyClass:
    _message = "Hello World"

_class = MyClass()

print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))

Wyjście:

_class is a instance of MyClass() True

Różnica między typem() a isinstance() w Python

rodzaj() isinstance ()
Python ma wbudowaną funkcję o nazwie type(), która pomaga znaleźć typ klasy zmiennej podanej jako dane wejściowe. Python ma wbudowaną funkcję isinstance(), która porównuje wartość z podanym typem. Jeśli wartość i podany typ pasują do siebie, zwróci true, w przeciwnym razie false.
Wartość zwracana jest obiektem typu Zwracaną wartością jest wartość logiczna, tj. prawda lub fałsz.
class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(type(A()) == A)
print(type(B()) == A)

Wyjście:

True
False

W przypadku typu sprawdzenie podklasy zwraca wartość false.

class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(isinstance(A(), A))
print(isinstance(B(), A))

Wyjście:

True
True

isinstance() daje wartość prawdziwą, gdy jest sprawdzana z podklasą.

FAQ

type() to wbudowana funkcja, która zwraca klasę obiektu. Po przekazaniu jednego argumentu zwraca typ obiektu; po przekazaniu trzech (name, bases, dict) tworzy nową klasę.

Funkcja isinstance(object, classtype) sprawdza, czy obiekt jest instancją klasy lub krotki klas. Zwraca wartość True, jeśli typ jest zgodny, a False w przeciwnym razie.

Funkcja type() zwraca dokładną klasę obiektu i ignoruje dziedziczenie, natomiast isinstance() zwraca wartość True również dla podklas. Funkcja isinstance() umożliwia elastyczne sprawdzanie typów z uwzględnieniem hierarchii klas.

Tak. Wywołanie type(name, bases, dict) z trzema argumentami dynamicznie zwraca nowy obiekt klasy. name to nazwa klasy, bases to krotka elementów nadrzędnych, a dict przechowuje atrybuty.

Tak. Funkcja isinstance() zwraca wartość True, gdy obiekt jest instancją klasy lub którejkolwiek z jej podklas. Dzięki temu jest bezpieczniejsza niż type() do sprawdzania typów dziedziczonych.

Asystenci AI, tacy jak GitHub Copilot, automatycznie uzupełniają kontrole type() i isinstance(), generują zabezpieczenia walidacyjne i sugerują właściwe podejście do danego obiektu podczas pisania Python.

Tak. Narzędzia oparte na sztucznej inteligencji mogą automatyzować wstawianie zabezpieczeń isinstance(), wykrywać niesprawdzone dane wejściowe i przekształcać niestabilne porównania type() w bezpieczniejsze sprawdzenia isinstance() w całej bazie kodu.

Funkcja type() zwraca obiekt klasy dla wartości: list dla listy i dict dla słownika. Po wydrukowaniu wyświetla się w postaci listy klas lub słownika klas.

Podsumuj ten post następująco: