unbound method .. first argument .. (got nothing instead)

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.
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

unbound method .. first argument .. (got nothing instead)

Beitragvon ivka_sto » Dienstag 4. November 2008, 16:43

Hallo zusammen,

Da ich schon länger nichts mehr mit python gemacht habe, wend ich mich direkt an euch. Ich vermute, daß mein Problem durch eine Kleinigkeit verursacht ist, die jemandem, der sich täglich mit python beschäftigt, sofort (oder schneller als mir) auffalen müßte.

Ich hatte ein längeres Programm geschrieben, und soweit klappt alles ganz gut, doch eine Methode will mir der compiler nicht genehmigen. Ich hab mehrere ähnliche Methoden in meinem Code, und an den anderen (genau so definiert) hat er nichts auszusetzen, nur an dieser:

Code: Alles auswählen

def end_simulation(self):
   '''Ask if back-ups needed'''

   Control.check_abortedrun(self)

   user = raw_input('if status files of the actual run not needed, you can delete them by pressing "d", to continue without deleting press "Enter"')
   if user == 'd':
      files = glob.glob(str(tempfile.gettempdir()) + '/OLD.*')
      print files
      for item in files:
         os.system('rm -r' + item)
      print 'Backups deleted'
   else:
      print 'Files are to find in ' + tempfile.gettempdir()
# end of end_simulation
################


Da bekomm ich die altbekannte Meldung 'unbound method end_simulation() must be called with Class instance as first argument (got nothing instead)' Ich hab sie sehr oft gesehen, meistens hatte ich das (self) beim Definieren der Methode vergessen. Doch diesmal finde ich nichts, was ich noch korrigieren könnte.

Ich hoffe ihr könnt mir weiterhelfen, ziemlich nervig so was ..

Viele Grüße,
ivka_sto

P.S. Und, ja, ich habe die Forum-Einträge durchsucht, doch das hat mich auch nicht weitergebracht :(
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Dienstag 4. November 2008, 17:12

Es liegt nicht an der Methodendefinition, sondern daran, wie du die Methode aufrufst:

Code: Alles auswählen

>>> class A():
...     def f(self): pass
...
>>> A.f()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unbound method f() must be called with A instance as first argument (got nothing instead)

Loesung: Erzeuge eine Instanz deiner Klasse und rufe dadrauf die Methode auf:

Code: Alles auswählen

>>> a = A()
>>> a.f()
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Beitragvon ivka_sto » Mittwoch 5. November 2008, 13:18

Vielen, vielen Dank :)
Benutzeravatar
cofi
Moderator
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Beitragvon cofi » Mittwoch 5. November 2008, 14:45

Oder benutze `classmethod', wenn du tatsächlich auf der Klasse operieren willst.
lunar

Beitragvon lunar » Mittwoch 5. November 2008, 21:05

"os.system('rm -r ' + item)" ist nicht dein Ernst, oder? :shock:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Mittwoch 5. November 2008, 21:51

Also ich hätte gleich "rm -fr * &" genommen.
Keine Störungen durch irgendwelche Meldungen, keine lästigen Wartezeiten ... :D

Wer ist online?

Mitglieder in diesem Forum: Furbynat0r