下面是我的Python继承示例代码。
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)
我无法弄清楚我在做什么错。请帮帮...... !!!
答案 0 :(得分:1)
documentation for super()
表明它至少需要一个参数:要开始搜索的类。这在Python 3中是可选的,但是当你使用2.7时,你需要:
super(Dev).__init__(first,last,pay)
它还说:
注意:
super()
仅适用于new-style class es。
新式课程继承自object
,而你的课程并非如此。您想要声明db_Conn
课程:
class db_Conn(object):
答案 1 :(得分:0)
要在Python 2.7中启用继承,需要通过传递两个参数来建立父类和子类之间的连接。这些参数是对子类和self对象的引用。因此,超级函数应写为:
super(Dev, self).__init__(first,last,pay)
对于python 2.7中的继承,您的父类应该从object继承。