Objekttyp überprüfen in Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dreamworx
User
Beiträge: 3
Registriert: Sonntag 3. Juni 2012, 22:22

Hey ihr,

da ich normalerweise mit Java arbeite habe ich nun ein kleines Problem in Python.


Und zwar möchte ich den Typ eines Objekts "testFahrzeug", welches von der Klasse Auto sein kann abfragen.

Mit

Code: Alles auswählen

print(type(testFahrzeug))
bekomme ich folgende Ausgabe:

Code: Alles auswählen

<class 'Auto'>
Also habe ich es wie folgt versucht:

Code: Alles auswählen

if type(testFahrzeug) is 'Auto':
...
was leider nicht funktioniert - wo ist hier mein Denkfehler, könnt ihr mir vielleicht weiterhelfen?


Vielen Dank schoneinmal, Grüße

Steve
Zuletzt geändert von Dreamworx am Sonntag 3. Juni 2012, 22:57, insgesamt 1-mal geändert.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Das macht man mit `isinstance`.

Code: Alles auswählen

isinstance(test_fahrzeug, Auto)
the more they change the more they stay the same
deets

*Warum* willst du das? Es gibt natuerlich gute Anwendungsfaelle dafuer... aber eher selten, und das du eigentlich Java-Programmierer bist laesst mich vermuten, dass du hier etwas nicht so machst, wie man es in Python tun wuerde.
Dreamworx
User
Beiträge: 3
Registriert: Sonntag 3. Juni 2012, 22:22

Wow - vielen Dank für die schnelle Hilfe.

Ich hatte es jetzt mit Strings gelöst - aber die direkte Typüberprüfung ist glaub etwas schöner 8) .
Zuletzt geändert von Dreamworx am Sonntag 3. Juni 2012, 23:08, insgesamt 1-mal geändert.
Dreamworx
User
Beiträge: 3
Registriert: Sonntag 3. Juni 2012, 22:22

deets hat geschrieben:*Warum* willst du das? Es gibt natuerlich gute Anwendungsfaelle dafuer... aber eher selten, und das du eigentlich Java-Programmierer bist laesst mich vermuten, dass du hier etwas nicht so machst, wie man es in Python tun wuerde.
Ich habe im Prinzip ein Teilmodul gestellt bekommen, wo eben eine Klasse Auto existiert die wiederum von einer anderen Klasse Fahrzeug abgeleitet wird.

Nun bekomme ich Objekte als Rückgabe auf bestimmte Methodenaufrufe von dem existierenden Teilmodul, die eben jedes beliebige Fahrzeug sein können. Ich muss aber wissen, welches konkrete Fahrzeug (z.b. eben Auto) diese sind um dann entsprechend der Kategorisierung weitere Schritte vorzunehmen.


LG

Steve
deets

Warum kann das entsprechende Objekt das nicht selbst tun? Sollte es zumindest - den dann ist dein Code flexibler, falls mal ein Objekt "Kabinenroller" daherkommt, welches genauso wie ein Auto behandelt werden muss, auch wenn's von Motorrad erbt. Oder so.
Antworten