class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Esiste un'alternativa a type() che può controllare se un oggetto eredita da una classe?get tipo classe base in python
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Esiste un'alternativa a type() che può controllare se un oggetto eredita da una classe?get tipo classe base in python
Sì, isinstance: isinstance(obj, Klass)
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
tipo() restituisce un oggetto di tipo. a è la classe attuale, non il tipo
La tua risposta sembra essere in contraddizione con ciò che l'OP dice nella sua domanda!? Sto solo cominciando ad andare al controllo del tipo, quindi sono interessato a qualsiasi commento. Sei sicuro che tipo (c) == tipo (d)? –
sia 'type (c)' che 'type (d)' restituiscono un tipo 'instance instance ', quindi devono essere uguali. Penso che dovremmo usare 'isinstance' qui. Puoi confermare questo creando 'class x: pass' e' z = x() ', non c'è ereditarietà tra' classe x' e 'classe a', ma troverai ancora' type (z) == type (c) 'restituisce True. – smwikipedia
Quanto sopra è per Python 2.7.8. In Python 3.4.1, 'type (c)' e 'type (d)' restituiranno 'class 'type'', che porterà anche al risultato' True'. Ma non dice 'c' e' d' sono dello stesso tipo. – smwikipedia