Objekterzeugung -> zu viele Parameter

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
kait
User
Beiträge: 9
Registriert: Mittwoch 6. Mai 2009, 14:23

Hallo,

mein Code sieht so aus:

Code: Alles auswählen

self.sMembers = {}
self.sMembersLock = threading.Lock()

self.gRxThread = gTx(self.interface, self.proto)
self.gRxThread.start()

self.gMembersThread = gMembers(self.gRxThread, self.sMembers, self.sMembersLock)
und die __init__ von gMembers:

Code: Alles auswählen

  def __init__(self, gRx, sMembers, sMembersLock):
    threading.Thread.__init__(self)
    self.running = True
    self.sMembers = sMembers
    self.sMembersLock = sMembersLock
    self.gRx = gRx
Beim erzeugen von von self.gMembersThread bekomme ich nur folgende Meldung:

Code: Alles auswählen

TypeError: __init__() takes exactly 3 arguments (4 given)
Bis gerade dachte ich, ich könnte bis 3 zählen. Hat jemand eine Idee woran das liegen kann?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

kait hat geschrieben:Bis gerade dachte ich, ich könnte bis 3 zählen. Hat jemand eine Idee woran das liegen kann?
Möglicherweise suchst du an der falschen Stelle:
In der Tat übergibst du 4 Parameter, nämlich die drei expliziten bei der Instanzbildung und einen impliziten (das, was bei der Methodendefiniton von __init__() das self ist).

Das Problem ist eher, dass die Fehlermeldung nicht mit deiner gezeigten __init__()-Methode zusammenpasst, denn die erwartet nicht 3 Parameter, sondern 4 (inkl. des impliziten). Die Fehlermeldung sagt aber, es würden nur 3 Parameter erwartet, d.h. 2 explizite.
kait
User
Beiträge: 9
Registriert: Mittwoch 6. Mai 2009, 14:23

Also die Stelle im Code ist die richtige. Zumindest passen die Zeilennummern die der Interpreter auswirft.
Sehr komisch :(
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ich tippe auf Idle und ein nicht neu geladenes Modul.
Das Leben ist wie ein Tennisball.
kait
User
Beiträge: 9
Registriert: Mittwoch 6. Mai 2009, 14:23

EyDu hat geschrieben:Ich tippe auf Idle und ein nicht neu geladenes Modul.
Kannst du evtl. etwas näher erklären was du meinst? Ich verstehe nämlich gerade nur Bahnhof ;)

Edit: Ach so, falls du mit Idle die IDE meinst, die benutze ich nicht.
kait
User
Beiträge: 9
Registriert: Mittwoch 6. Mai 2009, 14:23

Habs gefunden,... Ist mir aber peinlich zu verraten woran es lag.

Na gut, fürs Archiv: Man sollte seinen Klassen schon unterschiedliche Namen geben :oops:
Antworten