was Übergeben wenn ein Funktionsparameter self heißt?

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
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

Hallo!
Newbee - möchte mit Python COM Libraries nutzen und habe
comtypes importiert.

dabei stehen vielerlei Funktionen zur Verfügung, die
self
in der Paramaterliste haben z.B.

Code: Alles auswählen

Myapp.Application.IProvideClassInfo2_GetGUID( self, dwGuidKind )
Was wäre für self vernünftig, wenn ich diese Funktion aufrufen möchte?

Danke für Tipps
Erhy
Benutzeravatar
__blackjack__
User
Beiträge: 14036
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Erhy: Gar nichts, das ist das Objekt *selbst* auf dem die Methode aufgerufen wird. Das wird beim Aufruf automagisch übergeben.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

bekomme aber Fehler, wenn ich nur einen Parameter übergebe
z.B.:
IProvideClassInfo2_GetGUID() missing 1 required positional argument: 'dwGuidKind'
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

@Erhy: Du musst natürlich vorher ein Exemplar (manchmal auch Instanz genannt) der Klasse MyApp.Application erzeugen. Wenn du den vorhergehenden Satz nicht verstehst, solltest du zuerst das offizielle Python-Tutorial durcharbeiten.
In specifications, Murphy's Law supersedes Ohm's.
Erhy
User
Beiträge: 64
Registriert: Mittwoch 2. Januar 2019, 21:09

zu diesem Programmpunkt gibt es noch keine Instanz

mein Code davor ist:
plGUID = "{D918CDCE-4561-4B8D-9A35-6E599D124E3C}"
tlb_id = comtypes.GUID(plGUID)
plInterface = comtypes.client.GetModule((tlb_id, 1, 0))
#now I can import the Typlib
import comtypes.gen.Myapp as Myapp
Benutzeravatar
__blackjack__
User
Beiträge: 14036
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Erhy: Der Import ist ungünstig geschrieben. Das würde man ``from comtypes.gen import Myapp`` schreiben. Das ``as`` ist dazu da Werte aus Modulen *umzubenennen* nicht um da noch mal den gleichen Namen zu schreiben, an den das in dem Modul sowieso schon gebunden ist.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Benutzeravatar
pillmuncher
User
Beiträge: 1530
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Erhy hat geschrieben: Donnerstag 3. Januar 2019, 00:02 zu diesem Programmpunkt gibt es noch keine Instanz
Eben deswegen musst du eine erzeugen. Und dann darauf deine Methode mit passendem Argument aufrufen.
In specifications, Murphy's Law supersedes Ohm's.
Antworten