Suchtyp in Python - TypeError 'Unicode' -Objekt kann nicht aufgerufen werden

8

Ich versuche sicherzustellen, dass ein Objekt ein String-Typ in Python (für Google App-Engine) ist. Ich mache das, damit ich es in einen db.Text Typ ändern kann, wenn es mehr als 500 Bytes ist. Ich bekomme jedoch weiterhin den Fehler: TypeError 'unicode' object is not callable

%Vor%

Was soll ich verwenden, um zu testen, ob der Typ des Objekts eine Zeichenkette ist?

    
Chris Dutrow 09.05.2011, 21:18
quelle

5 Antworten

4

Warum rufst du types.StringTypes an? Es ist ein Tupel:

%Vor%

Verwenden Sie isinstance(value, types.StringTypes) and len(value) > 499

    
Jochen Ritzel 09.05.2011, 21:27
quelle
6

Ich denke, Sie müssen nur die Klammern aus types.StringTypes entfernen, da es ein Tupel ist (und nicht aufrufbar, daher der Fehler). Entweder das, oder Ihr Code verwendet tatsächlich StringType , was bedeutet, dass Ihr Code eine neue String-Instanz erstellt, anstatt den str -Typ zurückzugeben. Wie auch immer, es sieht wie ein Tippfehler aus. Weitere Informationen finden Sie in den Dokumenten .

    
Greg Haskins 09.05.2011 21:24
quelle
1

Greg Haskins hat recht

%Vor%

Könnten Sie

machen? %Vor%     
inspectorG4dget 09.05.2011 21:24
quelle
1

Bearbeiten: Hoppla! Ich habe types.StringType anstelle von types.StringTypes , der Test könnte also lauten:

%Vor%

Wo das Hauptproblem mit dem OP-Code das Vorhandensein der Parens am Ende von types.StringTypes war.

Original: Einige Probleme hier:

  • Wenn Wert ein Unicode enthält, gibt das Testen mit type () types.UnicodeType zurück
  • Der types.StringType ist eine Konstante, keine Funktion. Lassen Sie also die Klammern fallen.
  • Darüber hinaus ist types.StringType nicht iterierbar, also testen Sie es mit == oder is.

So könnte Ihr Test etwa wie folgt aussehen:

%Vor%     
GreenMatt 09.05.2011 21:29
quelle
0

Ich bevorzuge es isinstance(object_to_be_checked, str)

    
Prashant Kumar 09.05.2011 21:23
quelle

Tags und Links