type() e isinstance() in Python con esempi

⚡ Riepilogo intelligente

Python `type()` e `isinstance()` sono funzioni integrate per verificare la classe di un oggetto. `type()` restituisce il tipo esatto, mentre `isinstance()` verifica se un oggetto appartiene a una classe o a una tupla di classi. Entrambe sono illustrate qui con degli esempi.

  • 🔍 tipo(): Restituisce la classe esatta di un oggetto, ad esempio str, int o list.
  • isinstance(): Verifica se un oggetto è un'istanza di una determinata classe, restituendo True o False.
  • 🧩 Tipo() a tre argomenti: type(name, basi, dict) crea dinamicamente un oggetto classe completamente nuovo.
  • 🌳 Sottoclassi: isinstance() restituisce True per le sottoclassi; type() controlla solo la classe esatta.
  • 🎯 Casi d'uso: Convalida i tipi di input, le variabili di debug e la logica di diramazione in base al tipo di oggetto.
  • 🤖 Aiuto tramite intelligenza artificiale: Strumenti di intelligenza artificiale come Copilot generano controlli type() e isinstance() su richiesta.

type() e isinstance() in Python

Che cosa contiene type() Python?

Python ha una funzione incorporata chiamata type() che ti aiuta a trovare il tipo di classe della variabile fornita come input. Ad esempio, se l'input è una stringa, otterrai l'output come , per l'elenco, lo sarà , ecc.

Utilizzando il comando type(), puoi passare un singolo argomento e il valore restituito sarà il tipo di classe dell'argomento fornito, ad esempio: type(object).

È anche possibile passare tre argomenti a type(), ovvero type(name, bases, dict), in tal caso restituirà un nuovo oggetto di tipo.

Sintassi per tipo()

type() può essere utilizzato in due modi, come mostrato di seguito:

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

Scheda Sintetica: tipo(oggetto)

  • oggetto: questo è un parametro obbligatorio. Se questo è solo il parametro passato a type(), ti restituirà il tipo del parametro.

Scheda Sintetica: tipo(nome, basi, dict)

  • nome:nome della classe.
  • basi: (opzionale). Questo è un parametro facoltativo ed è la classe base
  • dict: (facoltativo). Questo è un parametro facoltativo ed è uno spazio dei nomi che contiene la definizione della classe.

Valore di ritorno

Se l'oggetto è l'unico parametro passato a type() allora ti restituirà il tipo dell'oggetto.

Se i parametri passati al tipo sono un tipo (oggetto, basi, dict), in tal caso restituirà un nuovo tipo di oggetto.

Esempio di tipo()

In questo esempio abbiamo un valore stringa, un numero, un valore float, un numero complesso, un elenco, una tupla, un dizionario e un set. Utilizzeremo le variabili con tipo per vedere l'output per ciascuna di esse.

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))

Produzione:

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'>

Esempio: utilizzo di type() per l'oggetto della classe.

Quando controlli l'oggetto creato da una classe utilizzando type(), restituisce il tipo di classe insieme al nome della classe. In questo esempio creeremo una classe e controlleremo il tipo di oggetto creato dal test della classe.

class test:
    s = 'testing'

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

Produzione:

<class '__main__.test'>

Esempio: utilizzo del nome, delle basi e del dict in type()

Il tipo può essere chiamato anche utilizzando la sintassi: type(name, bases, dict).

I tre parametri passati a type()ie, name, bases e dict sono i componenti che compongono una definizione di classe. Il nome rappresenta il nome della classe, le basi è la classe base e dict è il dizionario degli attributi della classe base.

In questo esempio, utilizzeremo tutti e tre i parametri, ovvero nome, basi e dict in type().

Esempio:

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

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

Produzione:

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

Quando passi tutti e tre gli argomenti a type() , ti aiuta a inizializzare la nuova classe con gli attributi della classe base.

In cosa consiste isinstance() Python?

Python isistanza fa parte di funzioni integrate di Python. Python isinstance() accetta due argomenti e restituisce true se il primo argomento è un'istanza del classinfo fornito come secondo argomento.

Sintassi isistanza()

isinstance(object, classtype)

Scheda Sintetica

  • object: Un oggetto la cui istanza stai confrontando con classtype. Restituirà true se il tipo corrisponde, altrimenti false.
  • tipo di classe: un tipo, una classe o una tupla di tipi e/o classi.

Valore di ritorno

Restituirà true se l'oggetto è un'istanza di classtype e false in caso contrario.

Esempi di isistanza()

In questa sezione studieremo vari esempi per imparare isinstance()

Esempio: isinstance() Controllo intero

Il codice seguente confronta il valore intero 51 con il tipo int. Restituirà true se il tipo di 51 corrisponde a int, altrimenti false.

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

Produzione:

age is an integer: True

Esempio: isinstance() Controllo float

In questo esempio confronteremo il valore float con il tipo float, ovvero il valore 3.14 verrà confrontato con il tipo float.

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

Produzione:

pi is a float: True

Esempio: isinstance() Controllo della stringa

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

Produzione:

message is a string: True

Esempio: isinstance() Controllo della tupla

Il codice verifica la presenza di una tupla (1,2,3,4,5) di tipo tupla. Restituirà vero se l'input fornito è di tipo tuple e falso in caso contrario.

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

Produzione:

my_tuple is a tuple: True

Esempio: isinstance() Imposta il controllo

Il codice verifica la presenza di un set ({1,2,3,4,5}, con tipo set. Restituirà true se l'input fornito è di tipo set e false in caso contrario.

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

Produzione:

my_set is a set: True

Esempio: controllo dell'elenco isinstance()

Il codice verifica la presenza di un elenco [1,2,3,4,5], con elenco dei tipi. Restituirà vero se l'input fornito è di tipo elenco e falso in caso contrario.

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

Produzione:

my_list is a list: True

Esempio: controllo dict isinstance()

Il codice verifica la presenza di un dict({“A”:”a”, “B”:”b”, “C”:”c”, “D”:”d”},con tipo dict. Restituirà vero se l'input fornito è di tipo dict e false in caso contrario.

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

Produzione:

my_dict is a dict: True

Esempio: test isinstance() su una classe

Il codice mostra il controllo del tipo di classe con isinstance() . L'oggetto della classe viene confrontato con il nome della classe all'interno di isinstance(). Restituisce true se l'oggetto appartiene alla classe e false in caso contrario.

class MyClass:
    _message = "Hello World"

_class = MyClass()

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

Produzione:

_class is a instance of MyClass() True

Differenza tra type() e isinstance() in Python

genere() isinstance ()
Python ha una funzione incorporata chiamata type() che ti aiuta a trovare il tipo di classe della variabile fornita come input. Python ha una funzione incorporata chiamata isinstance() che confronta il valore con il tipo dato. Se il valore e il tipo dato corrispondono, restituirà true altrimenti false.
Il valore restituito è un oggetto di tipo Il valore restituito è un booleano, ovvero vero o falso.
class A:
my_listA = [1,2,3]

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

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

Produzione:

True
False

In caso di tipo il controllo della sottoclasse restituisce false.

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

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

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

Produzione:

True
True

isinstance() fornisce un valore di verità quando viene controllato con una sottoclasse.

DOMANDE FREQUENTI

La funzione `type()` è una funzione integrata che restituisce la classe di un oggetto. Se le viene passato un argomento, restituisce il tipo dell'oggetto; se le vengono passati tre argomenti (nome, basi, dizionario), crea una nuova classe.

isinstance(object, classtype) verifica se un oggetto è un'istanza di una classe o di una tupla di classi. Restituisce True se il tipo corrisponde e False altrimenti.

`type()` restituisce la classe esatta di un oggetto e ignora l'ereditarietà, mentre `isinstance()` restituisce `True` anche per le sottoclassi. Utilizzare `isinstance()` per controlli di tipo flessibili che rispettino le gerarchie di classi.

Sì. La chiamata a type(name, bases, dict) con tre argomenti restituisce dinamicamente un nuovo oggetto classe. name è il nome della classe, bases è una tupla di genitori e dict contiene gli attributi.

Sì. Il metodo isinstance() restituisce True quando un oggetto è un'istanza di una classe o di una delle sue sottoclassi. Questo lo rende più sicuro di type() per il controllo dei tipi ereditati.

Gli assistenti IA come GitHub Copilot completano automaticamente i controlli type() e isinstance(), generano controlli di validazione e suggeriscono l'approccio corretto per un dato oggetto durante la scrittura. Python.

Sì. Gli strumenti basati sull'intelligenza artificiale possono automatizzare l'inserimento di controlli isinstance(), rilevare input non controllati e rifattorizzare i confronti type() fragili in controlli isinstance() più sicuri in tutto il codice.

Il metodo type() restituisce l'oggetto classe corrispondente al valore: list per una lista e dict per un dizionario. Stampandolo, si ottiene una forma simile a class list o class dict.

Riassumi questo post con: