类的继承格式为: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 类继承关系: [2、类的初始化:方式②, , , ] class C3---->cbase3 Process finished with exit code 0
# 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



