2017-04-11 72 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()显示它至少需要一个参数:要开始搜索的类。这是在Python 3制造可选的,但是当你正在使用2.7,你将需要:

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

它还说:

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

新式的类从object继承,这你没有按“T。您需要申报db_Conn类:

class db_Conn(object):