Python:类的继承

来源:互联网 发布:centos 鼠标失效 编辑:程序博客网 时间:2024/05/18 03:15

最近师弟在学习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.aclass 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基本的类的继承。

原创粉丝点击