Seite 1 von 1

OOP:mehrfache Vererbung:module.__init__() takes at most 2 ar

Verfasst: Donnerstag 12. Juni 2008, 10:14
von ivka_sto
Hallo,

Ich habe noch ein kleines Problem mit der Klassenhierarchie. Hab einige Postings gelesen und rumprobiert, komm aber trotzdem nicht weiter.

Ich habe in separaten Dateien, check_mod.py und run_mod.py, die Klassen Check und Run definiert. Dann mach ich eine Subklasse, die von beiden erbt:

Code: Alles auswählen

import Check, Run

class Action(Check, Run):
    def __init__(self):
        Check.__init__(self)
        Run.__init__(self)

    def __init__(self, num, msg):
        self.num = num
        self.msg = msg
Und bekomme blöderweise die Meldung 'module.__init__() takes at most 2 arguments (3 given)' Und da ich nirgendwo 3 arg vergeben habe, kann ich damit auch nichts anfangen. Könnte mir jemand meinen Fehler (der möglicherweise auch mit einem Verständnisfehler verbunden ist) zeigen?

Danke euch schon im voraus :)

VG, ivka_sto

Verfasst: Donnerstag 12. Juni 2008, 11:01
von Leonidas
Du kannst Klassen nur aus Modulen importieren. So wie es ausschaut, importierst du Module und versuchst, von einem Modul zu erben - das ist sicherlich nicht so gemeint, oder?

Verfasst: Donnerstag 12. Juni 2008, 11:04
von ivka_sto
Hi,

Nein. Die Module sind check_mod.py und run_mod.py (wo die Klassen Check und Run definiert sind). Ich kann sie ohne weiteres importieren, oder? Oder soll es heißen from check_mod import Check?

Verfasst: Donnerstag 12. Juni 2008, 11:06
von audax
probiers doch aus....

Verfasst: Donnerstag 12. Juni 2008, 11:09
von Leonidas
ivka_sto hat geschrieben:Nein. Die Module sind check_mod.py und run_mod.py (wo die Klassen Check und Run definiert sind). Ich kann sie ohne weiteres importieren, oder? Oder soll es heißen from check_mod import Check?
Nein. Probiers im Interpreter aus.

Verfasst: Donnerstag 12. Juni 2008, 11:22
von ivka_sto
Mach ich doch schon den ganzen Morgen. Ist echt nicht mein erster Gedanke sofort in den Forum zu posten, wenn mal was nicht läuft.
Im Interpreter bekomm ich ne Fehlermeldung für "from run_mod import Run" (no module called run_mod) und keine Fehlermeldung für import Run (das ist der Name der Klasse). Da liegt doch die Schlußfolgerung nahe, daß man das genau so im Code eingeben soll ..

Verfasst: Donnerstag 12. Juni 2008, 11:25
von Leonidas
ivka_sto hat geschrieben:Mach ich doch schon den ganzen Morgen. Ist echt nicht mein erster Gedanke sofort in den Forum zu posten, wenn mal was nicht läuft.
Im Interpreter bekomm ich ne Fehlermeldung für "from run_mod import Run" (no module called run_mod) und keine Fehlermeldung für import Run (das ist der Name der Klasse). Da liegt doch die Schlußfolgerung nahe, daß man das genau so im Code eingeben soll ..
Dann machst du irgendwas falsch, warscheinlich heißen deine Module nicht so. Du kannst doch logischerweise nicht die Klasse direkt importieren - wo sollte sie denn hergenommen werden wenn zwei Module die gleiche Klassen enthalten?

Mach mal ein ``type(Run)``, was gibt das aus?

Verfasst: Donnerstag 12. Juni 2008, 11:29
von ivka_sto
<type 'classobj'>

Verfasst: Donnerstag 12. Juni 2008, 11:30
von Aprilia
starte den Computer mal neu....
kann sein das es daran liegt !!!!

lg

Verfasst: Donnerstag 12. Juni 2008, 11:33
von Leonidas
ivka_sto hat geschrieben:<type 'classobj'>
Kann es sein, dass du einen Interpreter nutzt, wo ``Run`` schon vorher importiert wurde? Hast du es mal mit einer frischen interpreter-Session probiert? Achja, räum am besten alle rumliegenden pyc-Dateien weg.

Verfasst: Donnerstag 12. Juni 2008, 11:35
von Aprilia
Leonidas hat geschrieben:
ivka_sto hat geschrieben:<type 'classobj'>
Kann es sein, dass du einen Interpreter nutzt, wo ``Run`` schon vorher importiert wurde? Hast du es mal mit einer frischen interpreter-Session probiert? Achja, räum am besten alle rumliegenden pyc-Dateien weg.

was hat das für einen sinn???
wozu????

Verfasst: Donnerstag 12. Juni 2008, 11:47
von ivka_sto
Ja .. ich wollte mich gerade öffentlich für doof erklären, da es auf einmal geklappt hat, doch als ich ne neue Interpreter-Session gestartet habe und aufgeräumt habe, klappt es wieder nicht:
"ImportError: No module named run"

Verfasst: Donnerstag 12. Juni 2008, 11:53
von Leonidas
Aprilia hat geschrieben:was hat das für einen sinn???
wozu????
Was hat Computer neustarten für einen Sinn? Neustarten heißt meist: ich habe keine Ahnung, lasst uns hoffen das sich auf magische Weise behebt. Dein Post war in dieser Hinsicht absolut nicht hilfreich.
ivka_sto hat geschrieben:Ja .. ich wollte mich gerade öffentlich für doof erklären, da es auf einmal geklappt hat, doch als ich ne neue Interpreter-Session gestartet habe und aufgeräumt habe, klappt es wieder nicht:
"ImportError: No module named run"
Ich dachte das Modul heißt ``mod_run``?

Verfasst: Donnerstag 12. Juni 2008, 12:01
von ivka_sto
Das hab ich gerade mit weggeräumt. Und die Module run und check da gelassen, die die Klassen Run und Check drin haben.

Verfasst: Donnerstag 12. Juni 2008, 12:06
von Leonidas
Und du bist mit dem Interpreter im gleichen Ordner bzw die Module sind über ``sys.path`` auffindbar?

Verfasst: Donnerstag 12. Juni 2008, 14:26
von keppla
Aprilia hat geschrieben:was hat das für einen sinn???
wozu????
pyc sind der compilierte Bytecode, py ist der sourcecode. Die pyc werden vom interpreter genutzt, ohne dass die py-dateien neu ausgewertet werden, wenn der interpreter "glaubt" dass sich seitdem nichts geändert hat (test des änderungsdatum, glaube ich).
Wenn der Interpreter aus irgendeinem Grund glaubt, es habe sich nichts geändert, so würde das dazu führen, dass eine veraltete Version des Programmes ausgeführt wird.

Ich kann mir keine (realistische) Situation vorstellen, wo ein Neustart des Rechners bei Problemen mit dem Pythoninterpreter hilft.

Verfasst: Donnerstag 12. Juni 2008, 16:57
von birkenfeld
Aprilia hat geschrieben:starte den Computer mal neu....
kann sein das es daran liegt !!!!
sechsrad, bist du das?

Verfasst: Donnerstag 12. Juni 2008, 17:37
von ivka_sto
Uff, doch, im sys.path war der Fehler. Hab ich jetzt richtig und es klappt, danke für die Hilfe.

VG, ivka_sto