Python import Problem
Scheinbar So, ich weiß einfach nicht, wie importieren, die Dinge richtig in ein Python-Programm. Ich bin gerade erst mit der Sprache, und es ist viel anders als die von Java, die ich gewohnt bin.
Trotzdem, das Hauptproblem ist, dass es etwas falsch mit dem, wie ich bin Import der Pakete/Module/Klassen und ich kann nicht scheinen, um herauszufinden, was es ist.
Jetzt meine Datei-Struktur sieht wie folgt aus:
-Main Directory
main.py
-Person (Folder)
__init__.py
Person.py
Student.py
Recht jetzt mein main.py Datei aussieht..
from Person import Person
from Person import Student
if __name__ == '__main__':
p = Person.Person("Jim", 20)
print(p)
s = Student("Jim", 20, "math")
print(s)
und ich erhalte eine Fehlermeldung von TypeError: 'module' object is not callable
Haben versucht, es zu s = Student.Student("Jim", 20, "Math")
aber wenn das passiert, dass ich am Ende mit einem Fehler von TypeError: module.__init__() takes at most 2 arguments (3 given)
Referenz,
Person.py:
class Person():
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return "My name is {0} and I am {1}".format(self.name, self.age)
Student.py:
from Person import Person
class Student(Person.Person):
def __init__(self, name, age, sub):
Person.__init__(self,name,age)
self.sub = sub
Egal, was ich tun, um die Einfuhr oder etwas, was ich scheinen zu ändern, es gibt mir immer Fehler. Keine Ahnung, was an dieser Stelle zu tun - vielleicht habe ich gerade verpasst die Erstellung der Klassen und Unterklassen, wenn es wurde von mir gezeigt, aber ich kann nicht herausfinden, was es zu beheben.
Sie hätte wahrscheinlich eine einfachere Zeit, wenn Sie Kleinbuchstaben in Ihren Modulen und Großbuchstaben in Ihre Klasse Namen. Check-out Namenskonventionen: python.org/dev/peps/pep-0008
auch; Python ist nicht Java. Es gibt keinen Grund zu setzen, jede Klasse in ein eigenes Modul;
person.Person
und person.Student
beide definiert in person/__init__.py
oder person.py
ist durchaus vernünftig.Ähnlich: TypeError: Modul.__init__() dauert höchstens 2 Argumente (3)
InformationsquelleAutor Ben | 2011-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
main.py:
student.py
person.py
OK, reedited zu korrigieren, PythonWin war eigentlich nicht nachladen geänderten Module.
class Person
sollten Erben von object.class Student
sollten die Erben von Person, und rufen Sie den Konstruktor mitsuper(Student, self).__init__(name,age)
. Beachten Sie, dass in Student.py Sie importieren eine Klasse, in der Erwägung, dass in main.py Sie importieren ein Modul.Schließlich habe es zu arbeiten, es zu verändern
class Student(Person.Peron):
oder ändern die importfrom Person.Person import Person
PyDev noch sagt mir, dass etwas dort falsch ist, aber es funktioniert.Möchten Sie möglicherweise schließen und erneut öffnen, PyDev und überprüfen Sie noch einmal, ich weiß, in PythonWin die globals verschmutzt. Der oben angezeigten Versionen laufen bei mir in einem frisch geöffneten Dolmetscher.
InformationsquelleAutor agf
Das problem ist in der Schüler-Klasse. Hier, Person bezieht sich auf die Person.py -Modul. Rufen Sie das übergeordnete Objekt by doing:
Auch im Hauptteil sollten Sie initialisieren:
TypeError: module.__init__() takes at most 2 arguments (3 given)
Fehler :/Sollten Sie super () nicht.
Wahr. Korrigierte ich meine Antwort.
ich denke, dass super() funktioniert so nur mit Python 3. In Python 2.* es ist ein Fehler:
super() takes at least 1 argument (0 given)
Aber das gegebene Beispiel IST in Python 3. Die print-syntax.
InformationsquelleAutor Charles Brunet