Seite 1 von 1
Klasseninstanz prüfen
Verfasst: Dienstag 21. Februar 2006, 13:29
von george
Hallo,
ich habe eine Funktion geschrieben, die als Übergabeparameter eine Klasseninstanz erwartet.
Wie kann ich in meiner Funktion überprüfen, ob die Klasseninstanz von der Klasse Format erzeugt worden ist???
Also ungefähr so:
Code: Alles auswählen
def setFormat(self, objFormat):
#ist objFormat nicht von Klasse "Format"
raise ValueError, 'Falsche Klasse'
#stuff
Danke
Gruss george
Verfasst: Dienstag 21. Februar 2006, 14:19
von rayo
Hi
Du suchst dass hier:
Code: Alles auswählen
class a:
pass
class b(a):
pass
x = a()
y = b()
print isinstance(x,a)
print isinstance(y,a)
Gruss
Verfasst: Dienstag 21. Februar 2006, 14:32
von george
Hallo rayo,
ich danke dir.
Genau das habe ich gesucht. Funzt sauber
gruss george
Verfasst: Dienstag 21. Februar 2006, 22:31
von Joghurt
In der Regel solltest du so etwas nicht machen.
Der Grund ist einfach der, dass wenn sich das übergebene Argument so verhält wie das erwartete, kann es dir Wurscht sein. Wenn es es nicht tut, wird eh eine Exception ausgelöst.
Beispiel: isinstance(arg,int) ist nicht gut, da du dann keine Floats übergeben kannst, obwohl sie sich (fast) genau Verhalten
Es gibt natürlich Gründe, so etwas zu tun, aber im Allgemeinen solltest du dich an die Pythonphilosophie halten: "anstatt zu versuchen, Fehler auszuschließen, ist es besser, auf einen evtl. Fehler zu reagieren"
Verfasst: Dienstag 21. Februar 2006, 22:32
von BlackJack
Wobei Du dann keine Objekte mehr übergeben kannst, die zwar alle Bedingungen erfüllen, das heisst die erforderlichen Attribute und das gewünschte Verhalten besitzen, aber keine Exemplare der Klasse sind auf die Du prüfst.
Ob man eine Funktion oder Methode so einschränken möchte, sollte man sich gut überlegen.
Verfasst: Dienstag 21. Februar 2006, 23:10
von Joghurt
Hehe, ich war schneller
