Seite 1 von 1
Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 11:43
von Brando
Wie kann ich in Python eine Typinformation einholen? Wie kann ich in Abhängigkeit von dieser Typinformation bspw. einer Matrix abfragen?
bspw.
if type(m)==matrix:
do something
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 11:54
von BlackJack
@Brando: Typtests macht man in der Regel nicht. Falls man das doch macht (obwohl man das ja eigentlich nicht macht) gibt es `isinstance()`. Wofür brauchst Du das denn?
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 11:56
von Brando
Ich übergebe entweder eine Matrix oder einen Wahrheitswert. Je nach Typ der Übergabe wird eine andere Unterroutine ausgeführt.
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:15
von eckhard
@Brando: Ich benutze die folgende Abfrage
eckhard
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:20
von Brando
Gibt es auch:
if type(m)== matrix:
print(m)
?
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:24
von snafu
Der Typ ist einfach die jeweilige Klasse. Falls es noch um dein Vorhaben mit Sympy geht, dann also:
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:28
von snafu
eckhard hat geschrieben:@Brando: Ich benutze die folgende Abfrage
Das liefert den exakten Typ. Beim Programmieren mit Python will man aber auch abgeleitete Typen zulassen. Für die würde dein Code nicht erwartungsgemäß funktionieren. Zumal es eigentlich auch ``type(x) is int`` heißen müsste, da hier tatsächlich die Klasse zurückgeliefert wird und eine bestimmte Klasse nur genau einmal existieren kann. ``a == b`` fällt aber quasi auf ``a is b`` zurück, wenn nichts anderes definiert wurde. Daher funktioniert das.
Auch wenn es häufig darauf hinausläuft, dass man tatsächlich nur Objekte vom angegebenen Typen benutzt, so hat sich dennoch die Nutzung von `isinstance()` eingebürgert. Die Nutzung habe ich ja in meinem vorherigen Beitrag gezeigt.
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:47
von Sirius3
@Brando: wenn Du je nach Typ etwas anderes in einer Funktion machen willst, ist das ein DEUTLICHES Zeichen dafür, dass Du eigentlich zwei eigenständige Funktionen haben willst, die ohne Typprüfung auskommen,
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:54
von Brando
Bei mir wird der Name sympy in sympy.Matrix nicht erkannt. Muss man noch eine Bibliothek oder etwas anderes einbinden, damit das erkannt wird?
Re: Typinformation abfragen
Verfasst: Mittwoch 8. Juni 2016, 12:58
von Sirius3
@Brando: Du solltest den Namen sympy importieren.