#什么时候用继承
#1.当类之间有显著不同,并且较小的类是较大的类所需的组件时,用组合比较好
#2.当类之间有很多相同的功能,提供这些共同的功能做成基类,用继承比较好 class Dad: "这个是爸爸类"
money=10 def __init__(self,name):
print("爸爸")
self.name=name def hit_son(self):
print("%s 正在打儿子" %self.name) class Son(Dad):
money = 10000000
#当子类中有跟父类属性同名的数据属性或者方法属性时会覆盖父类中的属性,当子类中没有时会优先调用父类方法
def __init__(self,name,age):
self.name=name
self.age=age def hit_son(self):
print("来自儿子类",self.name) #print(Son.money)
#Son.hit_son() # print(Dad.__dict__)
# print(Son.__dict__) # s1=Son("TANG")
#
# print(s1.name)
# print(s1.money)
# s1.hit_son() #现在子类查找自己的init方法 s1=Son("alex","")
s1.hit_son() # print(Son.money)
# print(Dad.money)
#使用abc模块实现子类必须实现基类的方法
import abc
#接口继承 class All_file(metaclass=abc.ABCMeta):
@abc.abstractmethod def read(self):
pass @abc.abstractmethod
def write(self):
pass #接口:接口就是一个函数,接口继承:定义一个基类,基类当中把自己的方法定义成基类函数,来一个子类继承他就必须实现基类的方法
#使用abc模块实现子类必须实现基类的方法 class Disk(All_file): def read(self):
print("disk read") def write(self):
print("disk write") class Cdroom(All_file):
def read(self):
print("cdrom read") def write(self):
print("cdrom write") class MEm(All_file):
def read(self):
print("Mem read") def write(self):
print("Mem write") def sad(self):
print("jjj") m1=MEm()
# m1.sad()
# m1.read()
# m1.write() #继承顺序:1.python2:分经典类和新式类 经典类指不继承基类object的类,新式类继承基类object的类
2.python3:默认为新式类即默认继承object基类
3.经典类默认是深度有限的继成顺序,新式类默认是广度优先的继承顺序,新式类中可以使用类属性.__mro__查看类的继承顺序
class A:
def test(self):
print("A") #当类是新式类是继承查找顺序为广度优先 class B(A):
def test(self):
print("B") class C(A):
def test(self):
print("C") class D(B):
def test(self):
print("D") class E(C):
def test(self):
print("E") class F(D,E):
pass
# def test(self):
# print("F") f1=F()
f1.test()#F--->D---->B ---->E---->C---->A print(F.__mro__)
#python到底是如何实现继承的,对于你定义的每一个类,python会计算出一个方法解析顺序(MRO)元祖,这个MRO
#列表就是一个简单的,所有基类的线性顺序元祖,python3默认继承object基类

 

python面向对象的三大特征--继承的更多相关文章

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

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

  2. Python面向对象初始(三大特征,多态,继承,封装)

    Python面向对象的初始 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的 ...

  3. python 面向对象的三大特征之 继承

    #继承 #object 基类,是python定义的所有类的父类 #经典类:不继承object的类称作经典类 #新式类:继承object的类称作新式类 #python 3.x统一为新式类 #经典类是类对 ...

  4. Python面向对象的三大特征 --- 封装、继承、多态

    一.封装 1)封装:是面向对象的一大特点:将属性和方法封装在一个抽象类中.外界使用类创建对象,然后让对象调用内部方法.对象方法的细节都被封装在类的内部. class Person():   def _ ...

  5. python面向对象的三大特征

    1.封装: 封装就是对类和对象的成员访问进行限制,设定可以访问的方式和不可以访问的方式. 分类: 私有化的封装:当前类/对象种可以使用,类/对象外和子类/对象都不可以用 受保护的封装:当前类/对象和子 ...

  6. python面向对象的三大特征--多态

    #什么是多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同 #多态体现在由一个类实例化出多个对象,这些对象执行相同的方法时,执行的过程和结果不一样--不同的对象调用相同的方法 #多态的概 ...

  7. python面向对象的三大特征--封装

    #coding:utf-8 __author__="tang" #第一个层面的封装:类就是麻袋,本身就是一种封装 #第二个层面的封装:类中定义私有的,只在类的内部使用,外部无法访问 ...

  8. python 面向对象的三大特征之 封装

    封装:私有化 class Person(object): def __init__(self): self.__gender = "man" #在类的属性名称前面加__ self. ...

  9. C#学习笔记7:多态是面向对象的三大特征(封装、继承、多态)之一

    多态: 多态是面向对象的三大特征(封装.继承.多态)之一. 什么是多态? 一个对象表现出多种状态. 多态的实现方法: 1.虚方法: 2.抽象方法: 3.接口. PS:New 关键词可以隐藏父类的方法. ...

随机推荐

  1. [codeforces743C]:Vladik and fractions(数学)

    题目传送门 题目描述 请找出一组合法解使得$\frac{1}{x}+\frac{1}{y}+\frac{1}{z}=\frac{2}{n}$成立. 其中$x,y,z$为正整数且互不相同. 输入格式 一 ...

  2. 【后台管理系统】—— Ant Design Pro组件使用(二)

    一.关联表单项 - 动态增删输入框Input        封装子组件 class ParamsInputArray extends React.Component{ constructor(prop ...

  3. 十五、jenkins环境配置

    1. jenkins包下载,下载地址:https://jenkins.io/download/ 版本:Jenkins 2.134,下载war包 2. JDK下载:下载地址:http://www.ora ...

  4. base64加密小案例

    python终端下: import base64 >>> dict='{"name":"tom"}' >>> dict.en ...

  5. 树的基本概念以及java实现二叉树

    树具有的特点有: (1)每个结点有零个或多个子结点 (2)没有父节点的结点称为根节点 (3)每一个非根结点有且只有一个父节点 (4)除了根结点外,每个子结点可以分为多个不相交的子树.   树的基本术语 ...

  6. 010-elasticsearch5.4.3【四】-聚合操作【一】-度量聚合【metrics】-min、max、sum、avg、count

    一.概述 度量类型聚合主要针对的number类型的数据,需要ES做比较多的计算工作 参考向导:地址 import org.elasticsearch.search.aggregations.Aggre ...

  7. 009-elasticsearch5.4.3【三】搜索概述-查询模型、分页、ES数据类型

    一.概述 1.查询模型 搜索API允许用户执行搜索查询并返回与查询匹配的搜索匹配.它可以跨一个或多个索引以及跨一种或多种类型执行.可以使用查询Java API提供查询.搜索请求的主体是使用Search ...

  8. django中间件(获取请求ip)

    def simple_middleware(get_response): # 此处编写的代码仅在Django第一次配置和初始化的时候执行一次. print('1----django启动了') def ...

  9. delphi 语法 点滴总结clientdataset

    clientdataset   记录数 是从1 开始的. self.ClientDataSet5.RecNo   记录数 可以 读写 赋值. 随意改动. 哈哈 很方便.

  10. Ora01653 :是表空间不足

    解决方案:表空间中增加数据文件: ALTER TABLESPACE 表空间名称ADD DATAFILE 'D:\app\Administrator\oradata\orcl\Ibomis1.dbf' ...