最近师弟在学习python语言,对于类,继承等基本概念不是很了解,所以写这篇文章来详细的讲解一下继承的概念和在python中的使用。
a 单继承
定义一个时间类,带默认参数
class mytime(object):
def __init__(self,hour=21, \
minute=13, \
second=50):
self.hour = hour
self.minute = minute
self.second = second
def __str__(self):
return '__str__ hour:minute:second = %02d:%02d:%02d' \
%(self.hour,self.minute,self.second)
def get_hour(self):
return self.hour
def get_minute(self):
return self.minute
def get_second(self):
return self.second
def print_time(self):
print 'hour:minute:second = %02d:%02d:%02d' %(self.hour,self.minute,self.second)
说明: 构造函数 init(self,hour=21, minute=13, second=50) 带默认参数的定义方式 ;
用于输出的函数 str
得到某属性值的方法 get_xxxx
输出属性值的方法 print_time
a.2、定义日期时间类,继承时间类的属性和方法
class mydatetime(mytime):
def __init__(self,year = 2016,mounth = 1,day = 1, \
hour=21, minute=13,second=50):
super(mydatetime,self).__init__(hour,minute,second)
self.year = year
self.mounth = mounth
self.day = day
def __str__(self):
return '__str__ year--mounth--day = %02d--%02d--%02d' \
%(self.year,self.mounth,self.day)
def __del__(self):
""" __del__ mydatetime destroyed """
print "__del__ mydatetime destroyed"
def print_date(self):
print 'year-mounth-day = %04d-%02d-%02d' \
%(self.year,self.mounth,self.day)
# self.print_time()
说明: mydatetime 继承 mytime 的属性值,这里mydatetime(子类),mytime(父类)
构造函数 init(self,year = 2016,mounth = 1,day = 1, hour=21, minute=13,second=50) 带默认参数的定义方式 ,注意要通过 super初始化父类属性值;
用于输出的函数 str
输出属性值的方法 print_date
a.3 测试
if __name__ == '__main__':
t0 = mytime()
print t0
t0.print_time()
print t0.get_hour()
print "\n"
print "--"*10," mydatetime da:"
da = mydatetime(minute=40)
print da
da.print_time()
b、多重继承
b.1 定义父类 classA,classB
class classA(object):
def __init__(self):
print('init action in father class A')
class classX(object):
def __init__(self):
print('init action in father class X')
b.2、SubClassB 继承 classA
class SubClassB(classA):
def __init__(self):
print('init action in subclass B')
super(SubClassB,self).__init__()
2.3 subclassC继承subClassB
class SubClassC(SubClassB):
def __init__(self):
print('init action in subclass C')
super(SubClassC,self).__init__()
2.4、测试
if __name__ == '__main__':
print "\n"
print "--"*10," SubClassC b:"
b = SubClassC()
c、多重继承
c.1 定义两个基本类 classA 和 classX
class classA(object):
def __init__(self,a='classA'):
self.a = a
print('init action in father class A')
def print_a(self):
print self.a
class classX(object):
def __init__(self,x='classX'):
self.x = x
print('init action in father class X')
def print_x(self):
print self.x
c.2 SubClassX 类继承自 classA 和 classX
class SubClassX(classA,classX):
def __init__(self,a='SubClassX:a',x='SubClassX:x'):
print('init action in subclass X')
super(SubClassX,self).__init__()
# classX.__init__(self)
self.a = a
self.x = x
def print_SubX(self):
self.print_a()
self.print_x()
测试
if __name__ == '__main__':
print "\n"
print "--"*10," SubClassX x:"
sx = SubClassX()
sx.print_SubX()
上面就是python基本的类的继承。