Fehlermeldung

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.
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

Siehe und staune :shock: :

Code: Alles auswählen

Traceback (most recent call last):
  (...)
  File "/home/goswins_account/pyplatz/eckensuche.py", line 118, in iteriere
    pivot = self._alg.pivot(system=self._sys)
TypeError: pivot() takes exactly 2 arguments (1 given)
Hier gibt es eigentlich nichts mehr zu sagen, sondern nur über Pythons Fehlermeldungen zu stöhnen.
Der Traceback oben bestätigt auf eine Weise, die klarer nicht sein kann, dass genau 2_Argumente und nicht etwa eines an pivot() übergeben wurden.
Zuletzt geändert von Goswin am Freitag 2. Dezember 2011, 07:44, insgesamt 1-mal geändert.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Du meinst also, eine bessere Meldung sollte so aussehen:

Code: Alles auswählen

Traceback (most recent call last):
  (...)
  File "/home/goswins_account/pyplatz/eckensuche.py", line 118, in iteriere
    pivot = self._alg.pivot(system=self._sys)
TypeError: Code kaputt!!!
[edit]
Jetzt hab ich es auch gesehen. Nein, du liegst falsch, und Python hat recht. Du hast nur 1 Argument übergeben.
[/edit]
Zuletzt geändert von pillmuncher am Mittwoch 30. November 2011, 19:58, insgesamt 2-mal geändert.
In specifications, Murphy's Law supersedes Ohm's.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Goswin hat geschrieben: Der Traceback oben bestätigt auf eine Weise, die klarer nicht sein kann, dass genau 2_Argumente und nicht etwa eines an pivot() übergeben wurden.
Also ich sehe das nicht - wo genau siehst Du das?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Hast du zufällig `self` vergessen mitzuzählen?
the more they change the more they stay the same
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Vielleicht sowas:

Code: Alles auswählen

pivot = self._alg.pivot(self, system=self._sys)
Grüße,
anogayales
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@anogayales: Das ist doch alles reine Spekulation! Goswin muss eben mal die Signatur der `pivot`-Funktion hier posten - allea andere bringt nichts.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dav1d hat geschrieben:Hast du zufällig `self` vergessen mitzuzählen?
Das halte ich für unwarscheinlich, denn `self` wird implizit übergeben. Das sieht eher aus als hätte Goswin nur einen Parameter an eine Funktion übergeben die zwei erwartet -- exakt was die Fehlermeldung sagt.

Hyperion hat schon recht, ohne die Signatur können wir nur rumraten.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

:D :D :D Fehler gefunden :D :D :D ...
... aber erst, nachdem ich eine Nacht durchgeschlafen und für euch die unten folgende Zusatzinformation niedergeschrieben hatte, anhand von welcher man in der Tat den Fehler finden kann. Da es immer einige Knoblernaturen unter euch gibt, bin ich gespannt, ob ihn jemand anderes auch findet (meine Auflösung -falls überhaupt erforderlich- demnächst).

Die Fehlermeldung war

Code: Alles auswählen

Traceback (most recent call last):
  (...)
  File "/home/goswins_account/pyplatz/eckensuche.py", line 118, in iteriere
    pivot = self._alg.pivot(system=self._sys)
TypeError: pivot() takes exactly 2 arguments (1 given)
Die Signatur der Methode "pivot" ist

Code: Alles auswählen

class DualSimplex:
   (...)
   def pivot(self,system):
      (...)
Anmerkungen:
(1) Ich gehe natürlich davon aus, dass das erste übergebene Argument "self._alg" (==DualSimplex) ist und das zweite Argument "self._sys".
(2) Ich habe noch einmal bestätigt, dass ich wirklich DIESE Methode (und keine gleichnamige im __mro__) aufrufe, indem ich ihren Namen auf "def xyzzy(self,system)" änderte. Die Fehlermeldung bleibt in gleicher Form bestehen.
(3) Wenn ich den Methodenaufruf auf "self._alg.pivot(self._sys)" anstelle von "self._alg.pivot(system=self._sys)" ändere, bleibt die Fehlermeldung ebenfalls in gleicher Form bestehen.
(4) Dass der Fehler ein "TypeError" sein soll, halte ich auch für sehr seltsam.
(5) Meine Klasse DualSimplex erbt die __init__-Methode von "object" (was bei mir nur selten vorkommt).
BlackJack

Steht vielleicht irgend wo ein ``self._alg = DualSimplex``, also dass Du die Klasse statt eines Exemplars an dieses Attribut bindest?
deets

Mein Gott, was fuer ein Gewese darum, dass du einen daemlichen Fehler gemacht hast, und vergessen nen Satz Klammern hinter DualSimplex zu packen. Passiert ja jedem mal, aber das jetzt hier so zu verkaufen als ob es die groesste Entdeckung seit geschnitten Brot ist...
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@Blackjack: Richtig.
Auch Leonidas hatte in seinem Beitrag das Problem im Ansatz schon gelöst; nur ich habe nicht genau hingelesen, sonst hätte ich bemerkt, dass er "Funktion" sagt anstelle von "Methode".

@deets: Bitte nimm nichts für ungut! Der Forumsbeitrag war ja schon geschrieben; das "Lösung gefunden" habe ich nachträglich eingefügt...
Zuletzt geändert von Goswin am Freitag 2. Dezember 2011, 07:43, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

@Goswin: Hättest Du uns die Signatur sofort gezeigt, dann wäre die Auflösung ja auch schnell gekommen! Und letztlich hätte es bei Dir schon klingeln müssen, wenn das implizite Übergeben von "self" augenscheinlich scheitert. Zumindest hätte ich dann schon mal das Wort "Methode" erwähnt - aufgrund des Trcacebacks kann man das ja nun mal schwer ablesen...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deets

@Goswin

Fehler zu machen ist menschlich. Passiert mir ja auch laufend. Aber die Attituede von "boah, ist Python bloede" obwohl das ganze ein ISO Layer 8 Problem ist - die kannst du dir IMHO sparen.
Benutzeravatar
Goswin
User
Beiträge: 363
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen
Kontaktdaten:

@deets: Ich mache *nie* irgendwelche ISO-Layer-8-Fehler. Und dann wäre noch die Regel: Benutze immer Ironie in den Forenbeiträgen, denn Missverständnisse sind absolut ausgeschlossen :wink: .
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@deets: Nicht eher OSI...? ;)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

snafu hat geschrieben:@deets: Nicht eher OSI...? ;)
Letztes Semester hatte ich in einer Klausur zum Thema Netzwerke volle Punktzahl obwohl ich ISO statt OSI geschrieben hatte. Man kann es also wohl durchgehen lassen. :)
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ach, egal. Hauptsache 3 Buchstaben hingeschrieben. :)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

snafu hat geschrieben:Ach, egal. Hauptsache 3 Buchstaben hingeschrieben. :)
WTF
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

/me hat geschrieben:
snafu hat geschrieben:Ach, egal. Hauptsache 3 Buchstaben hingeschrieben. :)
WTF
Probier doch genau *das* beim nächsten Mal einfach aus. ;)
Lenzer
User
Beiträge: 9
Registriert: Dienstag 13. Dezember 2011, 04:20

Danke für den guten Tipp...hat mir auch weitergeholfen :)
Antworten