Kennt sich jemand gut mit Python für Windows aus?

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
Snowden
User
Beiträge: 2
Registriert: Mittwoch 17. Juli 2013, 06:43

Hallo,

Ich muss vorab sagen ich entwickle nicht in Python und habe es auch nicht vor. Es geht mir lediglich darum ein bestimmtes Feature zu untersuchen das ich in Python für Windows entdeckt habe. Python bringt scheinbar eine Wrapper für den Zugriff auf COM Komponenten(meisten wohl MS-Office) mit bzw. ich habe auch was von einer COM Extension gelesen. In diesem Wrapper hat man die Möglichkeit ComObject.None als Missing Parameter anzugeben. Nach Aussage von einem der Entwickler wird dem COM Server jedoch trotzdem ein ordentliches COM Objekt übergeben, quasi ein leeres COM Objekt könnte man sagen. Ich würde mir das gerne mal genauer anschauen, insbesondere was da übergeben wird, ich vermute eine Dumy Implementierung von IUnkown, keine Ahnung...
Meine ersten Versuche sind allerdings komplett gescheitert, ich bin C# Entwickler und schaue da wie ein Neandertaler auf den Source, wenn ich denn den richtigen erwischt habe...
Kann mir da jemand mit praktischen Hinweisen helfen bzw. mich auf den richtigen Weg (im Source) schicken?

Ich bin für jede Hilfe dankbar
Viele Grüsse :wink:
Snowden
User
Beiträge: 2
Registriert: Mittwoch 17. Juli 2013, 06:43

Update:
Ich habe das ganze soweit auf das folgene Source-File eingrenzen können.

http://xsd.alexandriaconsulting.com/tra ... py?rev=584

kann mir jemand erklären was hier passiert?

411 class DispatchBaseClass:
412 def __init__(self, oobj=None):
413 if oobj is None:
414 oobj = pythoncom.new(self.CLSID)


Ist self ein Zeiger auf sich selbst? wenn ja würde ich mal vermuten das CLSID virtual ist (sofern es sowas in Python gibt)
BlackJack

@Snowden: `self` ist sozusagen das ``this`` aus C++/Java/…. In Python sind *alle* Attribute „virtual”, also gibt es das als Begriff nicht im Python-Sprachgebrauch, weil man den ja nicht als Abgrenzung zu nicht-virtuellen Attributen braucht. Das CLSID-Attribut muss also von abgeleiteten Klassen als Klassenattribut zur Verfügung gestellt werden.

Edit: `DispatchBaseClass` ist also eine abstrakte Basisklasse. Auch das muss man bzw. kann man nicht syntaktisch irgendwie besonders kennzeichnen in Python.
Antworten