Python:类的继承

本文详细介绍了Python中的类继承概念,包括单继承和多重继承,并通过具体示例展示了如何实现继承及调用父类方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值