2017-04-11 12 views
0

以下は、Python継承に関する私のサンプルコードです。super().__ init __()がエラーで失敗する

class db_Conn: 
    hike = 1.04 

    def __init__(self,first,last,pay): 
      self.first = first 
      self.last = last 
      self.pay = pay 
      self.email = first + '.' + last + '@ibm.com' 


    def full_name(self): 
      return'{} {}'. format(self.first, self.last) 

    def emp_raise(self): 
      self.pay = int(self.pay * self.hike) 


emp1 = db_Conn('amitesh','sahay',50000) 
emp2 = db_Conn('amit','sharma',60000) 

class Dev(db_Conn): 
    def __init__(self,first,last,pay,prog): 
     super().__init__(first,last,pay) 
     self.prog = prog 

dev1 = Dev('amitesh','sahay',50000, 'python') 
dev2 = Dev('amit','sharma',60000,'scala') 

print (dev1.prog) 
print(dev2.email) 

私は、エラーの下に取得しています::

Traceback (most recent call last): 
dev1 = Dev('amitesh','sahay',50000, 'python') 
    super().__init__(first,last,pay) 
TypeError: super() takes at least 1 argument (0 given) 

私は何のミスをやって把握することはできませんよ。助けてください....!!!

答えて

1

documentation for super()には少なくとも1つの引数が必要であることがわかります。検索を開始するクラスです。これは、Pythonの3のオプションになりましたが、あなたは2.7を使用しているとして、あなたが必要です:

 super(Dev).__init__(first,last,pay) 

また言います:

新しいスタイルのクラスはあなたがdoesnのobject、継承

Note:super() only works for new-style class es.

を't。 db_Connクラスは、次のように宣言します。

class db_Conn(object): 
関連する問題