Seite 1 von 1

Unbekanntes Objekt auslesen

Verfasst: Donnerstag 26. Juli 2007, 17:56
von HarryPython
Hi

Die Kommunikation mit einer dll liefert mir folgendes zurück:
<__main__.s_vcan_event object at 0x00A8B1C0>
Irgendwo da müssen sich meine Nutzdaten verstecken. Wie komme ich an den Inhalt???

Eigentlich habe ich eine Instanz einer Klasse von Typ Structure und zeige mit einem Pointer auf diese, da der dll Befehl das so haben will. Nun sollte eigentlich der Aufruf für die dll die in der Klasse Structure angelegten Variablen füllen....was soll ich sagen...da kommt nichts an. Derher meine Idee gucken was kommt zurück(siehe oben). Hatte schon an wegspeichern mit dump gedacht. Aber da kommt die Fehlermeldung: TypeError: abstract class

Kann mir da jemand weiter helfen??

Danke[/code]

Verfasst: Donnerstag 26. Juli 2007, 19:42
von nkoehring
hallo...

Ja du koenntest versuchen die einzelnen Methoden des Objektes auszulesen:

Code: Alles auswählen

dir(obj)

Verfasst: Freitag 27. Juli 2007, 08:13
von HarryPython
Hi nkoehring

:lol: Also doch so einfach. Danke.

Da hab ich aber auch schon die nächste Frage. Nun kommt folgendes zurück:
['__class__', '__ctypes_from_outparam__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', '_b_base_', '_b_needsfree_', '_fields_', '_objects', 'chanIndex', 'portHandle', 'tag', 'tagData', 'timeStamp', 'transId']
Das heißt mein Objekt hat all diese Eigenschaften, die ich dann einzeln Abfragen kann, richtig?
Die letzten Eigenschaften kommen dann ja aus meinem Struct, da mein Objekt eine Instanze der Klasse s_vcan_event ist. Und die anderen Eigenschaften bringt so ein Objekt immer mit sich???? Hab ich alles richtig geraten???

Code: Alles auswählen

class s_vcan_event(Structure):
     _fields_ = [("tag", c_ubyte),        
                 ("chanIndex", c_ubyte),      
                 ("transId", c_ubyte),      
                 ("portHandle", c_ubyte),    
                 ("timeStamp", c_ulong),      
                 ("tagData", s_vcan_tag_data)]

Verfasst: Freitag 27. Juli 2007, 08:42
von lutz.horn
HarryPython hat geschrieben:Das heißt mein Objekt hat all diese Eigenschaften, die ich dann einzeln Abfragen kann, richtig?
Ja, allerdings sind einige davon Eigenschaften des Objekts, einige sind Methoden. Die Methoden musst Du naürlich mit Klammern aufrufen, die Eigenschaften ohne. Leider ist anhand der Ausgabe von dir() nicht entscheidbar, was was ist :wink:

Verfasst: Freitag 27. Juli 2007, 11:50
von Leonidas
lutz.horn hat geschrieben:Ja, allerdings sind einige davon Eigenschaften des Objekts, einige sind Methoden. Die Methoden musst Du naürlich mit Klammern aufrufen, die Eigenschaften ohne. Leider ist anhand der Ausgabe von dir() nicht entscheidbar, was was ist :wink:
Kein Problem, dann machen wir eben ein ``dir_meth()`` welches die ``Callables`` anzeigt und ein ``dir_var()`` welches den Rest anzeigt:

Code: Alles auswählen

In [17]: dir_meth = lambda x: [element for element in dir(x) if callable(getattr(x, element))]
In [18]: dir_var = lambda x: [element for element in dir(x) if not callable(getattr(x, element))]