Seite 1 von 1

frage zu win32com modul

Verfasst: Donnerstag 24. Juli 2008, 13:14
von bcit6k
Hallo,

ich habe eine Frage, ich lade eine com schnittstelle mit

Code: Alles auswählen

import win32com.client
geoip = win32com.client.Dispatch("GeoIPCOMEx.GeoIPEx")
hab ich da nun nur die quelle geöffnet?
muss ich zum verwenden noch einen befehl von win32com eingeben?

Danke

Re: frage zu win32com modul

Verfasst: Donnerstag 24. Juli 2008, 13:28
von Leonidas
Du hast nun eine Referenz auf das COM-Objekt. Darauf kannst du bereits alle Funktionen ausführen.

Verfasst: Donnerstag 24. Juli 2008, 21:05
von bcit6k
ah, ok, danke!

Verfasst: Freitag 25. Juli 2008, 06:28
von bcit6k
gibt es einen befehl um raus zu finden welche funktionen diese schnitstelle bereit stellt?

Verfasst: Freitag 25. Juli 2008, 07:56
von roschi
hallo!

wie waers mit 'dir(win32com.client.Dispatch)'

mfg
roschi

Verfasst: Freitag 25. Juli 2008, 08:14
von bcit6k
danke, die funktion is total geil ,aber ich hab da mal ne frage.

ich verwende die funktion set_db_path, die taucht da bei der ausgabe aber nicht auf. wie kann das sien das ich eine funktion aufrufen kann die da gar nicht vor kommt? oder sind die wo anders abgespeichert?

die funktion lässt sich aufrufen gibt aber nur false zurück!

danke für eure hilfe!

Verfasst: Freitag 25. Juli 2008, 11:14
von Leonidas
bcit6k hat geschrieben:ich verwende die funktion set_db_path, die taucht da bei der ausgabe aber nicht auf. wie kann das sien das ich eine funktion aufrufen kann die da gar nicht vor kommt? oder sind die wo anders abgespeichert?
Weil ``dir()`` nur die Attribute via Introspection anzeigt, aber pywin32 keine Introspection bietet. Durch dynamischen Lookup ist es aber möglich auf Attribute zuzugreifen, die nicht statisch definiert sind.

Hier mal ein Beispiel, wo man auf Attribute zugreift, die innerhalb von ``dir()`` nicht existieren:

Code: Alles auswählen

In [4]: class D(object):
    def __getattr__(self, name):
        if name == 'set_db_path':
            def f():
                print 'DB-PATH'
            return f
        raise AttributeError()
   ....: 
In [11]: d = D()
In [12]: print dir(d)
['__class__', '__delattr__', '__dict__', '__doc__', '__getattr__', '__getattribute__', 
'__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', 
'__repr__', '__setattr__', '__str__', '__weakref__']
In [13]: d.set_db_path()
DB-PATH

Verfasst: Freitag 25. Juli 2008, 11:24
von bcit6k
super, danke :)

das werd ich mir sofort rein ziehen!