2009-10-27 13 views

Odpowiedz

17

Dla python2: basestring jest klasą bazową dla obu str i unicode, natomiast types.StringTypejeststr. Jeśli chcesz sprawdzić, czy coś jest ciągiem, użyj basestring. Jeśli chcesz sprawdzić, czy coś jest wynikiem testu, użyj str i zapomnij o types.

10

Ten materiał jest zupełnie inna w Python3

types nie ma już StringType
str jest zawsze Unicode
basestring już nie istnieje

Więc staram się nie posypać te rzeczy przez kod zbyt wiele, jeśli może być konieczne jego przeniesienie na:

1
>>> import types 
>>> isinstance(u'ciao', types.StringType) 
False 
>>> isinstance(u'ciao', basestring) 
True 
>>> 

Wydaje mi się, że to dość ważna różnica ;-).

0

dla Pythona 2.x:

try: 
    basestring  # added in Python 2.3 
except NameError: 
    basestring = (str, unicode) 
... 
if isinstance(foo, basestring): 
    ... 

Oczywiście to nie może pracować dla Pythona 3, ale jestem pewien, konwerter 2to3 zajmie się tematem.

Powiązane problemy