Python super执行基类的构造方法
有一个需求是这样的,先有一个Machine的类,有通用的name、position、date属性,然后又出现了一个Server的类继承Machine类,但是Server类多出一个ipaddr的属性,所以这时就要在Server中重写__init__构造方法,新增一个ipaddr参数,如果想使用父类中已经定义好的方法,就需要使用super执行基类的构造方法把name、position、date三个参数传递给父类。
1 class Machine(object): 2 3 def __init__(self, name, position, date): 4 self.name = name 5 self.position = position 6 self.date = date 7 8 def getinfo(self): 9 return self.name, self.position 10 11 def getdate(self): 12 return self.date 13 14 15 class Server(Machine): 16 17 def __init__(self, name, position, date, ipaddr): 18 self.ipaddr = ipaddr 19 super(Server, self).__init__(name, position, date) 20 21 def getaddr(self): 22 return self.ipaddr 23 24 s = Server('cnsz003621', 'position1', '2017/02/23', '10.10.2.77') 25 r = s.getinfo() 26 r2 = s.getaddr() 27 print(r, r2)