接口继承:

基类不用实现内部逻辑,只是为了规范子类,可以用abc模块中以添加装饰器的方式实现

  1. import abc
  2. class All_file(metaclass=abc.ABCMeta):
  3.  
  4. @abc.abstractmethod
  5. def read(self):
  6. pass
  7.  
  8. @abc.abstractmethod
  9. def write(self):
  10. pass
  11.  
  12. class Disk(All_file):
  13. def read(self):
  14. print("Disk read")
  15. def write(self):
  16. pass
  17. class Cdrom(All_file):
  18. def read(self):
  19. pass
  20. def write(self):
  21. pass
  22.  
  23. m1 = Disk()
  24. m1.read()
  25. m1.write()

在子类中调用父类方法:

  1. class Vehiale:
  2. country = "China"
  3. def __init__(self,name,speed,load,power):
  4. self.name = name
  5. self.speed = speed
  6. self.load = load
  7. self.power = power
  8.  
  9. def run(self):
  10. print("kaidongla")
  11.  
  12. class Subway(Vehiale):
  13. def __init__(self,name,speed,load,power,line):
  14. Vehiale.__init__(self,name,speed,load,power)
  15. self.line = line
  16. def show_info(self):
  17. print(self.speed,self.line,self.load,self.name,self.power)
  18. def run(self):
  19. Vehiale.run(self)
  20. print("%s %s 线,开动啦" %(self.name,self.line))
  21.  
  22. line13=Subway("100m/s",13,1000,"北京地铁","电")
  23. line13.show_info()
  24. line13.run()

多态:

不同的实例可以去调用同一个方法,但实现的效果不同。

  1. class H2O:
  2. def __init__(self,name,temperature):
  3. self.name = name
  4. self.temperature = temperature
  5. def turn_ice(self):
  6. if self.temperature < 0:
  7. print('[%s]温度太低结冰了'%self.name)
  8. elif self.temperature > 0 and self.temperature < 100:
  9. print('[%s]液化成水'%self.name)
  10. elif self.temperature>100:
  11. print('[%s]温度太高变成水蒸气了'%self.name)
  12.  
  13. class Water(H2O):
  14. pass
  15. class Ice(H2O):
  16. pass
  17. class Steam(H2O):
  18. pass
  19.  
  20. w1 = Water('水',25)
  21. i1 = Ice('冰',-20)
  22. s1 = Steam('蒸汽',300)
  23.  
  24. # w1.turn_ice()
  25. # i1.turn_ice()
  26. # s1.turn_ice()
  27. #多态反映的是一种运行时候的状态
  28. def func(obj):
  29. obj.turn_ice()
  30.  
  31. func(w1)
  32. func(i1)
  33. func(s1)

Python12(接口继承,子类调用父类,多态)的更多相关文章

  1. java继承-子类调用父类的方法中包含子类重写的方法

    # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了... # 先看代码: public class Common { public static void main(String[] args ...

  2. python面向对象的三大特征--继承子类调用父类方法

    #在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...

  3. Python基础-接口与归一化设计、抽象类、继承顺序、子类调用父类,多态与多态性

    一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由 ...

  4. Python开发基础-Day20继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  5. python基础之继承实现原理、子类调用父类的方法、封装

    继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...

  6. 在C++中子类继承和调用父类的构造函数方法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  7. python子类调用父类的方法

    python子类调用父类的方法 python和其他面向对象语言类似,每个类可以拥有一个或者多个父类,它们从父类那里继承了属性和方法.如果一个方法在子类的实例中被调用,或者一个属性在子类的实例中被访问, ...

  8. C#中子类调用父类的实现方法

    这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下     本文实例讲述了C#中实现子类调 ...

  9. 【转】C++中了类继承和调用父类的构造函数方法

    构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法).因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需 ...

  10. JavaScript中子类调用父类方法的实现

    一.前言 最近在项目中,前端框架使用JavaScript面向对象编程,遇到了诸多问题,其中最典型的问题就是子类调用父类(super class)同名方法,也就是如C#中子类中调用父类函数base.** ...

随机推荐

  1. m个小朋友手拉手站成一个圈,从第k个小朋友开始报数,报到n的那个小朋友退到圈外,然后他的下一位重新报“1”。这样继续下去,直到只剩下一个小朋友,求解这个小朋友原来站什么地方。

    约瑟夫环问题. package pack; import java.util.*; public class demo_2 { static int a[]; public static void m ...

  2. 《DSP using MATLAB》Problem 7.15

    用Kaiser窗方法设计一个台阶状滤波器. 代码: %% +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  3. SP3871 GCDEX - GCD Extreme

    //author Eterna #define Hello the_cruel_world! #pragma GCC optimize(2) #include<iostream> #inc ...

  4. dll被设置为用记事本打开的解决方法

    dll被设置为用记事本打开的解决方法: 打开注册表编辑器 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Fi ...

  5. 【java高级编程】JDK和CGLIB动态代理区别

    转载:https://blog.csdn.net/yhl_jxy/article/details/80635012 前言 JDK动态代理实现原理(jdk8):https://blog.csdn.net ...

  6. [Ms SQL] 基本創建、修改與刪除

    ##創建 table student, 內涵 id ,name ,tel三種columne,設定id為primary key create table student ( id int primary ...

  7. java数据结构之链表(java核心卷Ⅰ读书笔记)

    1.链表 数组和ArrayList的一个重大缺陷就是:从中间位置删除一个元素要付出很大的代价,因为在这个元素删除之后,所有的元素都要向前端移动,在中间的某个位置插入一个元素也是这个原因. (小感悟:s ...

  8. HTTP 客户端接收数据超时

    本文使用两种方式测试HTTP 客户端读数据超时的情况,一种是直接使用golang自带的http库,另一种是使用martini web框架. 1. 测试1--直接使用http库 1.1.启动server ...

  9. sum(case when ct.tradeTotal >= 0 then 1 else 0 end)的意思

    String hql = "select new com.ks.admin.report.dto.ReportMonthWithDrawalDto(" + "count( ...

  10. WPF 开源项目

    Modern UI for WPF :http://mui.codeplex.com/ 利用Wpf实现Win8 Modern样式的开源项目wpf toolkit :http://wpftoolkit. ...