Unbekanntes Objekt auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

Donnerstag 26. Juli 2007, 17:56

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]
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Donnerstag 26. Juli 2007, 19:42

hallo...

Ja du koenntest versuchen die einzelnen Methoden des Objektes auszulesen:

Code: Alles auswählen

dir(obj)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

Freitag 27. Juli 2007, 08:13

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)]
Benutzeravatar
lutz.horn
User
Beiträge: 205
Registriert: Dienstag 8. November 2005, 12:57
Wohnort: Pforzheim

Freitag 27. Juli 2007, 08:42

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:
https://www.xing.com/go/invite/18513630.6a91d4
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 27. Juli 2007, 11:50

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))]
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten