[Python-de] Re: auf Liste testen

Alexander 'boesi' Bösecke boesi.josi at gmx.net
Sam Dez 17 20:45:38 CET 2005


Hi

Jetzt will ich doch noch mal meinen Senf dazugeben.

Am 15.12.2005 17:57:03 schrieb tanzer at swing.co.at:


> >    if type(foo) in (list, tuple): 
> > 
> > funktioniert 1. wunderbar 
> 
> Fuer kleine Werte von `funktioniert` und infinitesimale Werte von `wunderbar`.
> 
> Das erstemal wenn ein Objekt einer Klasse
> 
>     class listx(list) :
>         # whatever
> 
> daherkommt, geht der type-Vergleich in die Hose.

Ja natuerlich, muss ja auch so sein.

type liefert den Typ eines Objekts und isinstance überprüft ob ein
Objekt von einem bestimmten Typ abgeleitet (instanziert) ist. Das sind
fuer mich erstmal 2 grundverschiedene Dinge, auch wenn sich die
Einsatzgebiete haeufig ueberschneiden.

Der Typ des Objektes einer Klasse 'listx' ist nunmal 'listx' und nicht
'list'. Gerade bei den eingebauten Datentypen sehe ich allgemein als
grossen Vorteil zu wissen, ob ein Objekt 'list' oder 'listx' als
Ursprung hat. Weil bei 'list' als Datentyp kann ich mich auf ein
bestimmtes Verhalten verlassen, 'listx' kann dagegen kann so ziemlich
alles sein.[*]

Wenn ich bei type einen unbekannten Datentyp zurueckbekomm, kann ich ja
noch mit issubclass testen, ob der Typ von list abgeleitet wurde.


cu boesi

[*] Natuerlich ist es richtig mieser Stil, 'listx' so zu verunstalten,
dass es sich nicht mehr wie 'list' verhaelt.
-- 
       |¯|/¯/¯¯¯\|¯| |¯|¯|  |¯|/¯/¯¯¯\|¯¯¯¯\|¯¯¯¯
http://| / / /¯\ | | | | |  | / / /¯\ | (¯) | |¯¯
 smb://| \ \ \_/ | `¯´ | |__| \ \ \_/ |  ¯ /|  ¯|
 ftp://|_|\_\___/|_|¯|_|____|_|\_\___/|_|¯¯ |_|¯