class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Gibt es eine Alternative zu type(), die prüfen kann, ob ein Objekt von einer Klasse erbt?Get-Basis-Klassen-Typ in Python
class a:
pass
class b(a):
pass
c = b()
type(c) == a #returns False
Gibt es eine Alternative zu type(), die prüfen kann, ob ein Objekt von einer Klasse erbt?Get-Basis-Klassen-Typ in Python
Ja, isinstance: isinstance(obj, Klass)
>>> class a:
... pass
...
>>> class b(a):
... pass
...
>>> c = b()
>>> d = a()
>>> type(c) == type(d)
True
Typ() gibt ein Typ-Objekt. a ist die tatsächliche Klasse, nicht der Typ
Ihre Antwort scheint im Widerspruch zu sein, was das OP in seiner Frage sagt!? Ich fange gerade an, in Richtung Typprüfung zu gehen, also bin ich an irgendwelchen Anmerkungen interessiert. Bist du sicher, dass Typ (c) == Typ (d)? –
Sowohl 'type (c)' als auch 'type (d)' geben einen 'Klasseninstanz'-Typ zurück, so dass sie gleich sein müssen. Ich denke, wir sollten 'isinstance' hier verwenden. Sie können dies bestätigen, indem Sie 'class x: pass' und' z = x() 'erstellen, es gibt keine Vererbung zwischen' class x' und 'class a', aber Sie werden immer noch' type (z) == type (c) 'gibt True zurück. – smwikipedia
Das obige ist für Python 2.7.8. In Python 3.4.1 geben 'type (c)' und 'type (d)' '' class 'type'' zurück, was ebenfalls zu 'True' führt. Aber es heißt nicht, dass "c" und "d" vom selben Typ sind. – smwikipedia