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)

 

posted @ 2016-12-04 00:00  raykuan  阅读(481)  评论(0编辑  收藏  举报