
La funzione issubclass() di Python
In Python, la funzione integrata issubclass() è utilizzata per verificare se una classe è sottoclasse di un'altra classe o di una tupla di classi.
issubclass(class1, class2)
La funzione ha due parametri:
- Il primo parametro "class1" è la classe che vuoi controllare.
- Il secondo parametro "class2" è una classe o una tupla di classi.
La funzione issubclass() restituisce True se la classe indicata nel primo parametro (class1) è una sottoclasse delle classi specificate nel secondo parametro (class2), altrimenti restituisce False.
Se l'argomento nel secondo parametro (class2) non è una classe o una tupla di classi, la funzione solleva un errore "TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types". Quindi, ricorda sempre di gestire questi potenziali errori, specialmente se non sei sicuro del tipo di oggetto che indichi al secondo parametro.
Ti faccio un esempio pratico.
Crea una classe
- class A:
- pass
Poi crea una sottoclasse della classe A
- class B(A):
- pass
Infine, crea un'altra classe C indipendente dalle precedenti.
- class C:
- pass
A questo punto verifica se la classe B è una sottoclasse della classe A.
print(issubclass(B, A))
La funzione issubclass() restituisce il valore booleano True perché B è una sottoclasse di A
True
Adesso verifica se la classe C è una sottoclasse di A
print(issubclass(C, A))
In questo caso la funzione restituisce False perché C non è una sottoclasse di A
False
Puoi anche verificare se una specifica classe è una sottoclasse rispetto a una tupla di classi.
In questo caso la funzione issubclass() restituisce True se la classe è una sottoclasse in almeno una delle classi indicate nella tupla.
Ad esempio, crea una sottoclasse di B.
- class D(B):
- pass
Poi verifica se la classe D è una sottoclasse di A o C
print(issubclass(D, (A, C)))
La classe D non è una sottoclasse di C ma è una sottoclasse di B che a sua volta è una sottoclasse di A.
Quindi, la funzione restituisce True
True
Ricorda che Python considera ogni classe come sottoclasse di se stessa.
Quindi, se provi indichi la stessa classe nel primo e nel secondo parametro, la funzione issubclass() restituisce True.
print(issubclass(A, A))
True