[Python-de] Typ-Prüfung

Lutz Schröer latz at elektroelch.de
Mit Sep 17 14:55:39 CEST 2003


Hai,

nachdem Rainer mich einigermaßen überzeugt hat, das man Ausnahmen 
wirklich nur in Ausnahmen nutzen sollte :), stellt sich mir jetzt die 
Frage, wie ich folgendes eigentlich einfache Problem auch einfach 
lösen kann:

Ich habe eine Funktion, der ich entweder einen einzelnen String oder 
eine Liste mit Strings übergeben möchte. Um anschliessend einheitlich 
mit einer Liste weiterarbeiten zu können, habe ich mir folgendes 
Konstrukt ausgedacht:

def myFunc(s):
  if isString(s):
    s = [s]

und isString sieht so aus:

def isString(s):
  try: s += ' '
  except: return 0
  else: return 1

Wie kann ich das auch ohne Exception lösen? Im Kochbuch wird auch 
folgende Variante angeboten:

def isString(s):
  return isinstance(s, type(''))

Das funktioniert aber erst ab Python 2.0 und auch nicht mit Unicode. 
Da es sich um ein Modul handelt, das ich veröffentlichen will, sollte 
es möglichst universell, am besten Version-1.5- kompatibel und kein 
Code-Monster sein (ich will's wenigstens selber noch verstehen).

Wobei sich mir auch gerade die Frage stellt, ob man beim Erstellen 
von Modulen noch auf die Version 1.5 Rücksicht nehmen sollte (und wie 
lange noch) oder eine andere Version (welche?) als allgemein vorrätig 
und benutzt vorraussetzen kann?

Lutz
---
elektroelch.de -- free news for a free world