2016-06-12 14 views
0

ich eine generische GDB ziemlich Drucker bin Hinzufügen als here meiner gdb beschrieben, die folgende Zeile fügt die Karte der Typen den Drucker zu verwenden:Python-Wörterbuch: unorderable Typen Fehler

pretty_printers_dict[re.compile ('.*Generic.*')] = GenericPrinter 

Ich brauche es anpassen zu meinen Typen:

pretty_printers_dict[re.compile ('MyNamespace1.*')] = GenericPrinter 
pretty_printers_dict[re.compile ('MyNamespace2.*')] = GenericPrinter 

Grundsätzlich möchte ich den Drucker für alle meine Typen verwenden.

Aber ich bekomme die folgende Fehlermeldung in gdb:

Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 
Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 

Wenn ich so oder Linie zu entfernen, es funktioniert gut. Ich bin verwirrt,

Sehen Sie, welches Problem es ist und wie es zu beheben?

[UPDATE] ich von ihm weg durch die regulären Ausdrücke kombiniert:

pretty_printers_dict[re.compile ('MyNamespace1.*|MyNamespace2.*')] = GenericPrinter 
+0

Könnten Sie bitte mehr liefern Code, weil das keinen Sinn ergibt. Dies sollte funktionieren und funktioniert auf meiner Maschine! –

+0

@my_question, wenn Sie eine funktionierende Lösung haben, sollten Sie sie als Antwort hinzufügen und akzeptieren. –

Antwort

0

ich weg von durch die reguläre Ausdrücke kombiniert:

pretty_printers_dict[re.compile ('MyNamespace1.*|MyNamespace2.*')] = GenericPrinter 
0

Dieses Problem ist in Python tritt nur 3:

Die sorted Funktion muss die beiden kompilierte reguläre Ausdrücke vergleichen Das funktioniert nur in Python 2 (ich weiß nicht warum).

Aber ich glaube nicht, dass der sorted Anruf erforderlich ist, so ist es nur auszulassen:

for function in pretty_printers_dict: 
    if function.match(typename): 
     return pretty_printers_dict[function](val) 
Verwandte Themen