一、类的继承

类的继承格式为: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 '__main__.C3'>, <class '__main__.CBASE1'>, <class '__main__.CBASE2'>, <class 'object'>]
class C3---->cbase3Process 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 '__main__.C3'>, <class '__main__.CBASE1'>, <class '__main__.CBASE2'>, <class 'object'>]
class C3---->cbase3Process finished with exit code 0

python:类的继承及初始化相关推荐

  1. 一文讲透python类的继承原理,好比调制鸡尾酒

    python类继承的原理 python类继承的原理,大家完全可以将其想象为调鸡尾酒,就是电视上调酒师拿着一个杯子甩来甩去的跟扔印度飞饼一样的那种,我们不难发现,调鸡尾酒会用很多的原材料来勾兑(至于严格 ...

  2. 关于python类的继承正确的说法是_2017美团点评的运维岗校招笔试题,测测你会几题?...

    原标题:2017美团点评的运维岗校招笔试题,测测你会几题? 1.数据库:以下哪项不是HASH索引的特征? A MySQL不能确定在两个值之间大约有多少行 B 不能使用hash索引来加速ORDER BY ...

  3. python一个类继承多个类_如何让Python继承多个类?一文读懂Python类的继承

    面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过Python类的继承并且在此基础上衍生出让Python继承多个类的方法. 通过Python类的继承创建的新类称为子类或派生类, ...

  4. python 类的继承,类中的函数调用以及类输入数组

    第一部分,类的继承 先给出一个例子: class People(): #定义类,要大写,python 2中要在括号里加如object这个单词def __init__(self,n,a,w): #定义一 ...

  5. python 优先级继承_孤荷凌寒自学python第二十二天python类的继承

    (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自类A,意味着类B的内部代码块中就算不写任何代码,类B仍然 ...

  6. python类与继承person类_关于python中类的继承及self

    关于python中类的继承及self 如下,如果调用student类,则可以正常运行,但是如果去掉consumer.__init__(self, fee)中的self,将其改成consumer.__i ...

  7. Python 类的继承和组合

    面向对象的编程带来的主要好处之一是代码的复用,实现这种复用的方法之一是通过继承机制. python中解决代码复用的方式:继承和组合. 1 什么是继承 继承是一种创建类的方法,在python中,一个类可 ...

  8. 【Python基础知识库】Python类的继承

    继承是一种创建新类的方式,新创建的类加子类,继承的叫父类.超类.基类.继承是类与类之间的关系,继承的作用是减少代码冗余.提高重用性. 继承的特征:所有的类都继承自object类,即所有的类都是obje ...

  9. 关于python类的继承正确的说法是_关于python类的继承的一个小坑

    我们来看看一个很普通的类的继承: class Model: name = "DNN" def __init__(self, name): self.name = name def ...

最新文章

  1. 对于电单车同学们提出的改动建议
  2. Vue 系列之 组件
  3. Go 语言编程 — 函数
  4. netstat/nmap/netcat用法
  5. 360浏览器卸载_有恃无恐“弹弹弹”,安全卫士360自己就是最大的流氓“弹窗王”!...
  6. 树的Prufer 编码和最小生成树计数
  7. 3.Your First Machine Learning Model
  8. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)
  9. linux 多线程并行计算,浅谈.NET下的多线程和并行计算(五)线程池基础上
  10. .Net_asp.net页面的生命周期
  11. 3.excel 生成 sql
  12. java环境安装菜鸟教程_Linux菜鸟教程(一:JDK安装和java环境配置)
  13. CNN——基于CNN的车牌号识别
  14. CSS 媒体查询 @media【详解】
  15. Python 刷访问量
  16. 检查macOS中硬盘是否健康的小技巧
  17. day0---docker容器的dockerfile知识(5)
  18. HTTPS 中双向认证SSL 协议的具体过程
  19. C# Process.HasExited准确性
  20. 比较两个Integer的值是否相等

热门文章

  1. List中删除元素的6种方法比较--前两种就是坑,因为size指针前移。
  2. Unity——读取Excel中的数据
  3. Oracle Database 9i, 10g闪回版本查询
  4. 可爱的python下载_GitHub - palxiao/PythonWebSpider: 一个可爱的python简单爬虫
  5. String数组转Long类型集合List
  6. 【BZOJ3609】人人尽说江南好(博弈论)
  7. 《Head First 设计模式》之模板方法模式——冲泡咖啡和茶
  8. 锐捷网络构建ipv6 vlan网络
  9. java删除目录及其目录下的文件
  10. (2019.7.17更新)荣耀MagicBook黑苹果(i7)High Sierra 10.13.6