#coding:utf-8"""
术语:
1、在python3中,自定义创建的类都默认继承了python类中名为object的类
2、object类提供的方法,是双下划线开头的,是为了提供给python内部使用
3、被继承的类叫做超类,或者叫做父类
4、从超类(父类)继承过来的类叫做子类
5、子类来源于父类,又或者说,子类扩展了父类的功能
"""
"""
#扩展类:给一个已经存在的类添加新的行为(方法)
class Util: #我定义的这个类(意图是工具类),没有明确继承谁,所以它默认继承object类#定义扫描ip范围的方法def scan_ip_range(self, ip_range):print("start scan ip range: ", ip_range)
class ChildUtil(Util): #这个类继承了Util类#添加一个扫描端口的功能def scan_port(self, port):print("start scan port: ", port)if __name__ == '__main__':s = ChildUtil() #实例化子类后,创建出了对象ss.scan_ip_range("10.36.1.0/24") #扫描IP范围的方法是从父类继承过来的s.scan_port(80) #扫描端口的方法是在子类中扩展的
""""""
#重写普通方法
# 1、重写就是,比如父类里有a方法,但是对a方法不满意,需要重写
# 2、解决办法就是,在子类中写一个和父类中a方法名字一样的方法,名字也叫a
# 3、因此,这样就等价于重写了class Supper():def a(self):print("hello a")
class Child(Supper):def a(self):print("Hi! a...")
if __name__ == '__main__':o = Child()o.a() #此刻的调用是子类中的a方法#如果把子类中的a方法去掉,那么调用则是父类中的a方法# 测试结论:# 1、子类中的a方法只是覆盖了父类中的a方法,所以父类中的a方法还是存在的# 2、如果子类没有a方法,则会到父类中去找,父类没有的话会到object类中找,还是没有则引发异常# 3、因此,可以看出这个查找顺序是就近原则
"""#重写__init__(),普通方法可以重写,初始化也是可以从写的
"""
例如:
有一个类用来描述物理机对象,并且对象有主机名、IP地址、操作系统这3个基本属性
还有一个类用来描述vmware的虚拟机对象,也有和物理机一样的3个属性,但是虚拟机还有一个vmtools属性
那么,在定义虚拟机类的时候,难道要再重新定义一遍主机名、IP地址、操作系统这三个属性?
那么虚拟机类既然还有一个vmtools属性,那么肯定就有初始化方法,但是描述物理机对象的类也有初始化方法
这特么就引发问题了,解决代码如下
"""
"""
class Host:def __init__(self, hostname, ip, os):self.hostname = hostnameself.ip = ipself.os = osdef get_info(self):print(self.hostname, self.ip, self.os)class Vm(Host):def __init__(self, hostname, ip, os, vmtools):super().__init__(hostname, ip, os) #super的功能就是调用父类的代码self.vmtools = vmtools#重写了父类的get_info方法def get_info(self):super().get_info() #super的功能就是调用父类的代码print(self.vmtools, )if __name__ == '__main__':v = Vm("vm1","10.2.3.4","centos6.5", "vmtools_v1")v.get_info()
"""#多重继承
"""
就是有父类A,父类B,一个子类C,但是类C什么都没有
类C同时继承了父类A和B,这时候,C就拥有了父类A和B的属性和方法,都被继承过来了
"""
class A:def get_a(self):print("my a...")
class B:def get_b(self):print("my b...")class C(A, B): #继承A和Bpassif __name__ == '__main__':c = C()c.get_a()c.get_b()#应用场景一目了然,不用多说什么#在查找顺序,首先是在C类找,那么,然后是在A找还是在B找?这涉及到一个查找方式的问题#多重继承,有两种搜索方式,分别是深度优先和广度优先,具体的自行google

转载于:https://blog.51cto.com/freshair/2055934

Python面向对象——继承相关推荐

  1. python面向对象继承_Python 面向对象 --- 继承

    目标 单继承 多继承 面向对象三大特性 1,封装 根据 职责 将 属性 和 方法 封装 到以抽象的 类 中 2,继承 实现代码的重用,相同的代码不需要重复的缩写 3,多态 不同的对象调用相同的方法,产 ...

  2. Python面向对象(继承)

    day24 面向对象三大特性:继承 1 class F: 2 def f1(self): 3 print("F.f1") 4 5 def f2(self): 6 print(&qu ...

  3. python面向对象继承_四. python面向对象(继承)

    一. 继承 class A:pass #父类 基类 超类 class B:pass #父类 基类 超类 class A_son(A,B): pass #子类 派生类 class AB_son(A):p ...

  4. python 面向对象 继承之 supper 函数

    supper 最基本的使用方法: 重写父类的构造方法 再调用父类的构造方法 能够调用父类的构造方法,再调用父类的构造方法 class A(object):def __init__(self):prin ...

  5. 什么是继承python_面向对象继承

    Python 面向对象继承 一 什么是面向对象的继承 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A"继承自"另一个类别 ...

  6. python面向对象编程 -- 封装、继承

    面向对象编程 -- 封装.继承 面向对象编程三要素:封装.继承和多态.本文主要看和封装.继承相关的概念:在python中多态的概念比较模糊,本文不做讨论. 1 封装 封装:将数据和操作组装到一起,对外 ...

  7. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  8. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

  9. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

最新文章

  1. call/apply/bind 的理解与实例分享
  2. 【转】Usage of sendBroadcast()
  3. easyui---修改删除查询
  4. KubeMeet 深圳站完整议题出炉
  5. 【转】shell pipe与输入输出重定向的区别
  6. 【大牛系列教学】java面试常考的编程题
  7. zabbix html使用c语言写的,zabbix 自定义LLD
  8. Centos7 配置网络
  9. mysql压测宕机_MySQL压测时Linux中断异常飚高,原来是因为...
  10. Useful webs
  11. Ant-deign-vue入门:布局-官方文档踩坑
  12. uniapp 微信小程序配置全局主题色、实现动态修改主题色
  13. Speedoffice(excel)如何制作斜线表头
  14. 如何理解空洞卷积(dilated convolution)
  15. ModuleNotFoundError: No module named ‘common‘
  16. iOS开发概述-12.手势处理
  17. 设计模式之一工厂模式
  18. 根据实测高程值校正DSM高程
  19. 求6+66+666+6666+66666。(10分)(JAVA)
  20. 华为手机,果然有顶级的产品经理 —— 手机克隆太好用了

热门文章

  1. OpenStack常见命令与问题集合
  2. 使用SVN的导出功能,( 目的 : 使导出的文件目录中,不带有svn相关的文件 )
  3. 【Oracle】创建角色
  4. 解决overlay2存储驱动的磁盘配额问题
  5. 关于Windows 1803版本内核隔离打开后无法关闭的解决方案
  6. SharePoint 创建 Lookup 类型的Site Column解决跨站问题
  7. QT学习之解决QT中QIcon图标不显示的问题
  8. mkfs.xfs 命令找不到的解决方法
  9. 解决谷歌网站Your connection is not private问题
  10. 为什么Apple建议使用dispatch_once在ARC下实现单例模式?