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

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

Donnerstag 12. Juni 2008, 10:14

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 11:01

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?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Donnerstag 12. Juni 2008, 11:04

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?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Donnerstag 12. Juni 2008, 11:06

probiers doch aus....
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 11:09

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Donnerstag 12. Juni 2008, 11:22

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 ..
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 11:25

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?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Donnerstag 12. Juni 2008, 11:29

<type 'classobj'>
Aprilia
User
Beiträge: 50
Registriert: Dienstag 15. April 2008, 12:09
Wohnort: Görlitz (östlichste stadt Dtl's)

Donnerstag 12. Juni 2008, 11:30

starte den Computer mal neu....
kann sein das es daran liegt !!!!

lg
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 11:33

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Aprilia
User
Beiträge: 50
Registriert: Dienstag 15. April 2008, 12:09
Wohnort: Görlitz (östlichste stadt Dtl's)

Donnerstag 12. Juni 2008, 11:35

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

Donnerstag 12. Juni 2008, 11:47

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"
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 11:53

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``?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ivka_sto
User
Beiträge: 63
Registriert: Dienstag 11. Dezember 2007, 23:13

Donnerstag 12. Juni 2008, 12:01

Das hab ich gerade mit weggeräumt. Und die Module run und check da gelassen, die die Klassen Run und Check drin haben.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 12. Juni 2008, 12:06

Und du bist mit dem Interpreter im gleichen Ordner bzw die Module sind über ``sys.path`` auffindbar?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten