[Python-de] types.SetType

Stefan Schwarzer sschwarzer at sschwarzer.net
Fr Feb 9 20:58:26 CET 2007


Hallo Dinu,

On 2007-02-09 20:08, Dinu Gherman wrote:
> Wie ich gerade sehe, gibt es weder in Python 2.4 noch in 2.5 die
> Variablen types.SetType (bzw. types.FrozensetType), was mich doch
> ein wenig erstaunt.
> 
> Man kann sie zwar selbst auf type(set()) (bzw. type(frozenset())
> setzen, aber noch fehlt mir ein furchtbar intelligenter Grund da-
> fuer, warum das jeder fuer sich tun sollte...?

ich vermute, dass man inzwischen statt type(set()) einfach
set verwenden sollte und statt type(frozenset()) nur frozenset:

Python 2.4.3 (#1, Dec 29 2006, 02:22:42)
>>> type(set()) is set
True
>>> type(frozenset()) is frozenset
True

Zum anderen stellt sich die Frage, was der Anwendungsfall für
die Typprüfung ist. Wenn es die seltene emulierte Typprüfung
mit isinstance ist, tut es problemlos etwas wie
isinstance(value, set) .

Dass noch so viele andere Typen im types-Modul rumliegen, die
man analog zu oben bekommen kann, ist sicher eher der
Kompatibilität alter Programme mit neueren Python-Versionen
geschuldet. Andererseits gibt es ein paar Typen, die nicht in
den Builtins vorhanden sind, z. B. module. Das kann man nur
mit dem new-Modul relativ einfach erzeugen, soweit ich weiß.
Wenn man also mit dem Modultyp vergleichen will, kann man
isinstance(value, new.module) oder, wie ich gerade sehe,
isinstance(value, types.ModuleType) verwenden. In Python 2.4.3
(s. o.) gilt jedenfalls

Python 2.4.3 (#1, Dec 29 2006, 02:22:42)
>>> new.module is types.ModuleType
True

Viele Grüße
Stefan