2017-07-09 7 views
-2

Pythonの継承で私の手を試しています。私はエラーを修正する方法についてあなたの助けが必要です。Python - TypeError:module .__ init __()は最大で2つの引数をとります(3が指定されています)

私は2つのクラスを持っています。Person(スーパークラス)& Contact(サブクラス)。

問い合わせを実行しようとしたとき、私は次のエラーを取得する:事前

以下

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

おかげで私のコードです:すべての

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'はモジュールであり、クラスではありません。その「輸入」声明はそこで何をしていますか? 'Person'を' Person.py'という名前のファイルに定義していますか?もしそうなら、 'class Contact(Person.Person)'を使う必要があります。 – chepner

答えて

0

まず、インデントを台無しにされました!人は別のファイルにある場合は

は、このように、拡張子のないファイル名をインポートします。

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()) 

アクセス親クラスのプライベートフィールドをそのメソッドを介して。

+0

パーフェクト、問題解決済み。多くのお礼ありがとうございます – user2693371

+0

歓迎します:-)これを受け入れられた回答としてください。 – rolika

関連する問題