2014-07-18 3 views
0

J'aiRécupère la valeur de PyCSimpleType?

class Temp(ctypes.Structure): 
_fields_ = [('a', ctypes.c_longlong), 
      ('b', ctypes.c_uint32)] 

Je souhaite obtenir la valeur de b (que je pense être int/long en python).

J'essaie d'accéder à cette valeur à l'aide

Temp._fields_[1][1].value 

mais je reçois

<attribute 'value' of '_ctypes._SimpleCData' objects> 

Franchement, je ne sais pas comment accéder à cette valeur en entier/format long. Cette structure est remplie par le programme C++; Comment puis-je y accéder?

Répondre

0

Pour la première, vous devez instancier objet de type Temp et vous pouvez utiliser intégré dans getattr:

>>> t = Temp(1,2) 
>>> getattr(t, 'a') 
1 
>>> 

_fields_ contient seulement les noms de champs et les types de données.

+0

Oui, c'est vrai pour un membre de classe non-statique, dans cette classe 'Temp', il n'y a pas de' self._fields_', donc je ne comprends pas comment l'utiliser sans objet. Quoi qu'il en soit, parce que les données sont remplies par une bibliothèque C++, cela n'a pas de sens de créer un objet par moi-même, puis d'appeler 'getattr', d'autres indices? –

+0

Alors, pourriez-vous fournir un code où ces données sont remplies? – RomanHotsiy

+0

bien..no, qui est à l'intérieur de certains dll, son essentiellement C++ - COM interop, de sorte que le point où les données sont remplies est également inaccessible pour moi –

Questions connexes