栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python:类的继承及初始化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python:类的继承及初始化

一、类的继承

类的继承格式为:class 新类(旧类),新类就可以继承旧类的所有类方法,并可以定制新的方法甚至覆盖旧类的方法。

二、类的初始化

初始化函数的意思是,当你创建一个实例的时候,这个函数就会被调用。

初始化函数的写法是固定的格式:中间是“init”,这个单词的中文意思是“初始化”,然后前后都要有【两个下划线】,然后__init__()的括号中,第一个参数一定要写上self,不然会报错。

1、类的初始化:方式①【推荐】
# encoding: utf-8
class CBASE1(object):
    def __init__(self, srcdir='./data', **kwargs):
        print("class CBASE1---->srcdir = {0}".format(srcdir))
        super(CBASE1, self).__init__(**kwargs)

    def myprint(self):
        print('cbase1')


class CBASE2(object):
    def __init__(self, size='20', **kwargs):
        print("class CBASE2---->size = {0}".format(size))
        super(CBASE2, self).__init__(**kwargs)

    def myprint(self):
        print('class CBASE2---->cbase2')


class C3(CBASE1, CBASE2):
    def __init__(self, name='saturn', **kwargs):
        print("class C3---->name = {0}".format(name))
        # 初始化基类函数方法1:使用super函数,每个类都被初始化一次,建议方式
        super(C3, self).__init__(**kwargs)  # 按照类继承关系逐步初始化基类

    def myprint(self):  # 函数重写
        print('class C3---->cbase3')


if __name__ == '__main__':
    obj = C3(name='zhzh', size='50', srcdir='./tmp')
    print('n类继承关系: {}'.format(C3.mro()))
    obj.myprint()

打印结果:

class C3---->name = zhzh
class CBASE1---->srcdir = ./tmp
class CBASE2---->size = 50

类继承关系: [, , , ]
class C3---->cbase3

Process finished with exit code 0
2、类的初始化:方式②
# encoding: utf-8
class CBASE1(object):
    def __init__(self, srcdir='./data', **kwargs):
        print("class CBASE1---->srcdir = {0}".format(srcdir))
        super(CBASE1, self).__init__(**kwargs)

    def myprint(self):
        print('cbase1')


class CBASE2(object):
    def __init__(self, size='20', **kwargs):
        print("class CBASE2---->size = {0}".format(size))
        super(CBASE2, self).__init__(**kwargs)

    def myprint(self):
        print('class CBASE2---->cbase2')


class C3(CBASE1, CBASE2):
    def __init__(self, name='saturn', **kwargs):
        print("class C3---->name = {0}".format(name))
        # 初始化基类函数方法2:显示调用基类函数,此时第二个基类函数被初始化两次
        CBASE1.__init__(self, srcdir=kwargs['srcdir'])  # 基类继承关系为CBASE1, CBASE2时,初始化CBASE2共被初始化两次
        CBASE2.__init__(self, size=kwargs['size'])

    def myprint(self):  # 函数重写
        print('class C3---->cbase3')


if __name__ == '__main__':
    obj = C3(name='zhzh', size='50', srcdir='./tmp')
    print('n类继承关系: {}'.format(C3.mro()))
    obj.myprint()

打印结果:

class C3---->name = zhzh
class CBASE1---->srcdir = ./tmp
class CBASE2---->size = 20
class CBASE2---->size = 50

类继承关系: [, , , ]
class C3---->cbase3

Process finished with exit code 0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号