接口继承:

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

 import abc
class All_file(metaclass=abc.ABCMeta): @abc.abstractmethod
def read(self):
pass @abc.abstractmethod
def write(self):
pass class Disk(All_file):
def read(self):
print("Disk read")
def write(self):
pass
class Cdrom(All_file):
def read(self):
pass
def write(self):
pass m1 = Disk()
m1.read()
m1.write()

在子类中调用父类方法:

 class Vehiale:
country = "China"
def __init__(self,name,speed,load,power):
self.name = name
self.speed = speed
self.load = load
self.power = power def run(self):
print("kaidongla") class Subway(Vehiale):
def __init__(self,name,speed,load,power,line):
Vehiale.__init__(self,name,speed,load,power)
self.line = line
def show_info(self):
print(self.speed,self.line,self.load,self.name,self.power)
def run(self):
Vehiale.run(self)
print("%s %s 线,开动啦" %(self.name,self.line)) line13=Subway("100m/s",13,1000,"北京地铁","电")
line13.show_info()
line13.run()

多态:

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

 class H2O:
def __init__(self,name,temperature):
self.name = name
self.temperature = temperature
def turn_ice(self):
if self.temperature < 0:
print('[%s]温度太低结冰了'%self.name)
elif self.temperature > 0 and self.temperature < 100:
print('[%s]液化成水'%self.name)
elif self.temperature>100:
print('[%s]温度太高变成水蒸气了'%self.name) class Water(H2O):
pass
class Ice(H2O):
pass
class Steam(H2O):
pass w1 = Water('水',25)
i1 = Ice('冰',-20)
s1 = Steam('蒸汽',300) # w1.turn_ice()
# i1.turn_ice()
# s1.turn_ice()
#多态反映的是一种运行时候的状态
def func(obj):
obj.turn_ice() func(w1)
func(i1)
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. java中二维数组内存分配

    区分三种初始化方式: 格式一: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的元素有多少个. //例:int arr[] ...

  2. Spark:DataFrame批量导入Hbase的两种方式(HFile、Hive)

    Spark处理后的结果数据resultDataFrame可以有多种存储介质,比较常见是存储为文件.关系型数据库,非关系行数据库. 各种方式有各自的特点,对于海量数据而言,如果想要达到实时查询的目的,使 ...

  3. [工作积累] TAA Ghosting 的相关问题

    因为TAA要使用上一帧的历史结果,那么在相机移动的时候,颜色就会有残留,出现ghosting(残影). 由于上一帧历史是累积的,是由上一帧的直接渲染结果和上上帧的结果做了合并,所以ghosting并不 ...

  4. Azure DevOps Server/Team Foundation Server

    TFS wasn't designed specifically to support a requirements management process. Epics are like big st ...

  5. install rust

    Step 1. Trial 1 Download rustup-init.exe exec rustup-init.exe SW hangs 2. Trial 2 install rust-1.33. ...

  6. jquery 获取name一样的值

    $("input[name=test]").map(function(){return this.value;}).get().join(",")

  7. Mediawiki PlantUML Graphviz 图片 中文 乱码

    安装Mediawiki 的  PlantUML  Graphviz   插件后,生成图片时,中文成乱码问题. 环境:Ubuntu 16.04 MediaWiki 1.31.1 PHP 7.0.32-0 ...

  8. 一些关于three.js的摘抄笔记

    加载多个geometry的方式: (可以利用three.js自带convert_obj_three.py文件将obj文件转换成json文件) function loadModel() { loader ...

  9. squid http,https, 代理,默认端口3128

    squid http,https, 代理,默认端口3128 https 代理时出现 403,是因为squid默认允许 192.168.0.0 网段代理 在配置文件中,““acl localnet sr ...

  10. Linux下mysql的root密码修改方法(ERROR 1054)

    #1.停止mysql数据库 /etc/init.d/mysqld stop #2.执行如下命令 mysqld_safe --user=mysql --skip-grant-tables --skip- ...