2017-07-09 1 views
-2

Ich versuche mich an Python-Vererbung. Ich brauche deine Hilfe, um einen Fehler zu beheben.Python - TypeError: Modul .__ init __() braucht höchstens 2 Argumente (3 gegeben)

Ich habe 2 Klassen: Person (Superklasse) & Kontakt (Unterklasse).

bekomme ich folgende Fehlermeldung beim Versuch Kontakt zu laufen:

 "Contact.py", line 3, in <module> 
      class Contact(Person): 
     TypeError: module.__init__() takes at most 2 arguments (3 given) 

Vielen Dank im Voraus

Unten ist mein Code:

class Person: 
     __name="" 
     __age=0 

     def __init__(self, name, age): 
      self.__name = name 
      self.__age = age 

     def set_name(self, name): 
      self.__name = name 

     def set_age(selfself, age): 
      self.__age = age 

     def get_name(self): 
      return self.__name 

     def get_age(selfself): 
      return self.__age 

     def getInfo(self): 
     return "Name is: {} - Age is: {}".format(self.__name, self.__age) 

     # ---------------------------------------------------- 

    import Person 
      class Contact(Person): 
     __method="" 

     def __init__(self, name, age, method): 
      super().__init__(name, age) 
      self.__method = method 



     def set_method(self, method): 
      self.__method = method 

     def get__method(self): 
      return self.__method 

     def getInfo(self): 
      return "Name is: {} - Age is: {} - Contact Info: {}".format(self.__name, self.__age, self.__method) 


    person2 = Contact("Adam Smith", 19, "Email: [email protected]") 
    print(person2.getInfo()) 
+1

'Person' ist ein Modul, keine Klasse. Was macht diese 'Import'-Aussage dort? Definieren Sie "Person" in einer Datei namens "Person.py"? Wenn ja, müssen Sie 'class Contact (Person.Person)' verwenden. – chepner

Antwort

0

Zunächst einmal ist die Vertiefung verkorkste !

Wenn Person in einer separaten Datei ist, importieren Sie den Dateinamen ohne Erweiterung, wie folgt aus:

class Person: 

    def __init__(self, name, age): 
     self.__name = name 
     self.__age = age 

    def set_name(self, name): 
     self.__name = name 

    def set_age(self, age): 
     self.__age = age 

    def get_name(self): 
     return self.__name 

    def get_age(self): 
     return self.__age 

    def getInfo(self): 
     return "Name is: {} - Age is: {}".format(self.__name, self.__age) 

    # ---------------------------------------------------- 

from person import Person # assumed your Person class is in person.py 

class Contact(Person): 
    __method="" 

    def __init__(self, name, age, method): 
     super().__init__(name, age) 
     self.__method = method 

    def set_method(self, method): 
     self.__method = method 

    def get__method(self): 
     return self.__method 

    def getInfo(self): 
     return "Name is: {} - Age is: {} - Contact Info: {}".format(self.get_name(), self.get_age(), self.__method) 


person2 = Contact("Adam Smith", 19, "Email: [email protected]") 
print(person2.getInfo()) 

Greifen Sie auf die privaten Felder der übergeordneten Klasse durch ihre Methoden.

+0

Perfekt, Problem gelöst. Vielen Dank – user2693371

+0

Gern geschehen :-) Bitte beachten Sie, dass dies die akzeptierte Antwort ist. – rolika

Verwandte Themen