![](https://secure.gravatar.com/avatar/728b4e15178ab98deec799940ed093d6.jpg?s=120&d=mm&r=g)
Lutz Schröer wrote:
[...] 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 type('') ist wg. Kompatibilität mit antiken (< 2.2) Python-Versionen. Falls auch Unicode-Strings für dich Strings sind, ist mein Test ab Python 2.3: isinstance(s, basestring) und wenn 2.2 unterstützt werden soll: isinstance(s, (str, unicode)) Aber wenn ich ehrlich sein soll, finde ich deinen Ansatz prinzipiell b0rken. Da es in Python keine Methodenüberladung anhand der Parametertypen gibt (wie heisst der Fachbegriff noch mal?), würde ich einfach *zwei* Methoden schreiben. Eine für einen String, eine für eine Liste.
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).
Unicode-Unterstützung und 1.5.2-Kompatibilität zusammen. Viel Spass.
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?
Wenn ich was als Open Source veröffentliche, mache ich dass weil mir die Entwicklung Spass macht. Und alles < 2.2 ist für mich kein Spass :-/ Und was mir nicht Spass macht, mache ich nur gegen Geld, denn das nennt sich dann Arbeit ;-) Ich setzte bei meinem Zeug schon lange mindestens 2.1 voraus und in den nächsten Major-Releases meiner Datenbank-Module 2.2. Ich leiste gern meinen Beitrag dazu, Leute zum Upgrade von Python zu bewegen :-D -- Gerhard _______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de