Im Grunde bin ich ein C-API in Python (mit CFFI (was super ist)).Abrufen eines C-Variablenwerts in einem Enum unter Verwendung seines Namens (eine Python-Zeichenfolge) in Python
Ich habe eine ENUM in diesem C API:
typedef enum
{
enum1 = value1;
enum2 = value2;
...
} enumSomething;
In Python, I erhalten den Namen einer Variablen, die in dieser Aufzählung ist, als String: "enum1"
. Ich möchte value1
bekommen.
Mit CFFI
können Sie eine Enum umbrechen und auf ihre Mitglieder zugreifen (here is an example). Mein Problem hier ist, dass ich Strings habe, die den Namen der Variablen darstellen, nicht die Variable selbst.
So cwrapper.c."enum1"
würde nicht funktionieren (cwrapper
der Name des Moduls ist, der den Namen von ffi.dlopen(libname)
zurück Wraps und c
während der Bibliothek Verpackung).
Ich könnte ein Wörterbuch machen, die den Variablennamen als String in die reale Variable, wie Karte würde:
enum = { "enum1" : cwrapper.c.enum1, "enum2" : cwrapper.c.enum2, ... }
Aber an diesem Punkt würde ich besser schreiben die Enum als Wörterbuch Python.
Ich weiß, ich könnte auch eine Regex verwenden, um die C-Datei zu lesen, aber ich denke, es gibt noch einen besseren Weg für die Handhabung, an die ich nicht gedacht habe. Irgendeine Idee?
ich darauf hinweisen, eigentlich wollte, dass es nicht ein gültige Syntax wäre. Allerdings wusste ich nichts über getattr. Danke, es funktioniert! – DRz
@DRz siehe meine aktualisierte –
Warum sollte es sauberer sein, anstatt nur getattr zu verwenden? – DRz