Seite 1 von 1

Self - Selbst und Selbstlos

Verfasst: Freitag 8. Mai 2009, 11:33
von 4bit
Hallo,

Zwei Fehlermeldungen tauchen bei mir häufiger auf:

(1) TypeError: where_in() takes exactly 2 arguments (1 given)
(2) NameError: global name 'self' is not defined

Nebenbei erwähnt befürchte ich, daß ich nicht genau weiß, warum man self als Parameter an eine Funktion übergeben muß, die sowiso innerhalb einer Klasse definiert ist.

Where_in() verwendet 2 Parameter, und ändert nach ein paar Berechnungen Item Einstellungen. Die Items gehören natürlich zu einem Widget von self. Also sollte die Definition, nach meinem Verständnis so beginnen

Code: Alles auswählen

def where_in(self, p1, p2):
Egal ob ich where_in dann später mit oder ohne self aufrufe erhalte ich eine Fehlermeldung, die sich entweder auf die Anzahl der Parameter oder auf self bezieht.

Weiß jemand weiter?

Grüße,
4bit

Verfasst: Freitag 8. Mai 2009, 11:50
von Rebecca
Self ist nicht automatisch innerhalb der Klasse definiert (es bezieht sich ja auch ueblicherweise auf eine Instanz der Klasse).

Vielmehr ist es so, dass bei einem Aufruf myobject.mymethod(a, b, c) noch das Objekt selbst (myobject) automatisch als erster Parameter uebergeben wird, sodass deine Methode dann die Parameter (myobject, a, b, c) erhaelt.

Daher musst du immer einen zusaetzlichen Parameter in der Parameterliste angeben, und den koenntest du benennen, wie du willst (und dann ist in der Methode eben kein "self" bekannt, sondern der von dir gewaehlte Name), es hat sich aber aus guten Gruenden "self" eingebuergert.

Re: Self - Selbst und Selbstlos

Verfasst: Freitag 8. Mai 2009, 12:47
von Leonidas
4bit hat geschrieben:Nebenbei erwähnt befürchte ich, daß ich nicht genau weiß, warum man self als Parameter an eine Funktion übergeben muß, die sowiso innerhalb einer Klasse definiert ist.
Muss man nicht, ``self`` wird bei Instanzmethoden implizit übergeben. Du solltest dir generell nochmal ein Stück Dokumentation zu Klassen ansehen, dann verstehst du das sicherlich besser.

Verfasst: Freitag 8. Mai 2009, 12:53
von numerix

Re: Self - Selbst und Selbstlos

Verfasst: Freitag 8. Mai 2009, 13:16
von Darii
4bit hat geschrieben:Egal ob ich where_in dann später mit oder ohne self aufrufe erhalte ich eine Fehlermeldung, die sich entweder auf die Anzahl der Parameter oder auf self bezieht.
Wie rufst du es auf? In welchem Kontext ist die Funktion definiert. Beispielcode bei dem der Fehler auftritt ist immer hilfreich bei solchen Problemen, ansonsten siehe die anderen Posts.

Verfasst: Freitag 8. Mai 2009, 13:57
von 4bit
Hatte einfach irgendwo ein self vergessen.
Nächstes mal weiß ich dann, wonach ich bei diesen Fehlermeldungen suchen sollte.

Danke.