"""

"""
class Animal(object):
def __init__(self,name,food):
self.name = name
self.food = food
self.blood = 100
self.waise = 100
def eat(self):
print(f"{self.name} eating {self.food}")
def drink(self):
print("hhh")
def sleep(self):
print("sss") class Cat(Animal):
def eat(self):
self.blood += 100
Animal.eat(self)
def pashu(self):
print("pashu") class Dog(Animal):
def eat(self):
self.waise += 100
Animal.eat(self)
def kanjia(self):
print("kanjia")
c = Cat("小白","猫粮")
c.eat()
print(c.__dict__) """
父类和子类方法的选择
子类的对象,如果去调用方法
永远先优先调用自己
如果自己有 用自己的
如果自己没有 用父类的
如果自己有还想用父类的:直接在子类方法中调用父类的方法 父类名.方法名(self)
""" class Foo(object):
def __init__(self):
self.func() #在每一个self调用func时,我们不看这句话在哪里执行,只看self是谁
def func(self):
print("in foo")
class Son(Foo):
def func(self):
print("in son") Son() """
多继承
"""
class A():
def func(self):
print("A")
class B(A):
def func(self):
print("B")
class C(A):
def func(self):
print("C")
class D(B,C):
def func(self):
print("D") d = D()
d.func()
#在python3中总是广度优先走
#在python2中经典类总是深度优先走 在python2中新式类:括号里继承object 经典类:括号里没有object """
c3算法
A(O) = [AO]
B(A) = [BAO]
C(A) = [CAO]
D(B) = [DBAO]
E(C) = [ECAO] F(D,E) = c3(D(B) + E(C))
= [F] + [DBAO] + [ECAO]
F = [DBAO] + [ECAO]
FD = [BAO] + [ECAO]
FDB = [AO] + [ECAO]
FDBE = [AO] + [CAO]
FDBEC = [AO] + [AO]
FDBECA = [O] + [O]
FDBECAO 算法内容
如果是单继承 那么总是按照从子类-》父类的顺序来计算查找顺序
如果是多继承,需要按照自己本类,父类1,父类2的继承顺序
merge规则:
如果一个类出现在从左到右所有顺序的最左侧,并且没有在其他位置出现,那么先提出来作为继承顺序中的一个
或者一个类出现在从左到右顺序的最左侧,并没有在其他顺序中出现,那么先提出来作为继承顺序中的一个
如果从左到右第一个顺序中的第一个类出现在后面且不是第一个,那么不能提取,顺序向后继续找其他顺序中符合上述条件的类 经典类-深度优先 新式类-广度优先
深度优先自己看
广度优先遵循c3算法,会用mro,会查看顺序
经典类没有mro,新式类有
"""

python中的类继承的更多相关文章

  1. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  2. 关于Python中的类普通继承与super函数继承

    关于Python中的类普通继承与super函数继承 1.super只能用于新式类 2.多重继承super可以保公共父类仅被执行一次 一.首先看下普通继承的写法 二.再看看super继承的写法 参考链接 ...

  3. python中的类与继承

    Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...

  4. python中使用多继承

    python中使用多继承,会涉及到查找顺序(MRO).重复调用(钻石继承,也叫菱形继承问题)等 MRO MRO即method resolution order,用于判断子类调用的属性来自于哪个父类.在 ...

  5. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  6. 4、Python中的类详解(0601)

    <大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...

  7. python中新式类和经典类

    python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...

  8. Python中的类(一)

    Python中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...

  9. 【转】doxygen+graphviz生成工程中的类继承树及函数调用图

    转自----hequn8128 在阅读代码量比较多的项目时,类的继承树和函数调用图能够直观地向我们显示类之间或者函数之间的各种关系,方便我们了解程序的整体框架,很多时候可以起到事半功倍的作用.这里尝试 ...

  10. GO-结构体(类似python中的类)

    一.结构体有名属性 package main import "fmt" func main(){ type Sb struct { name string //属性名,数据类型 a ...

随机推荐

  1. springboot配置类@ConfigurationProperties报错Not registered via @EnableConfigurationProperties or marked as Spring component

    添加一个@Component可以解决此问题,只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能.

  2. 请求GET和POST的区别

    实际上GET和POST他们只有语义上的区别,之所以有我们所谓的区别是由于前端与后端达成的协议. 区别1:get请求不会附带请求体,而post请求有请求体. 区别2: get请求传递的信息量是有限的,适 ...

  3. 洛谷 P2105 K皇后 题解

    START: 2021-08-06 16:34:44 题目链接: https://www.luogu.com.cn/problem/P2105 题目详情: 小 Z 最近捡到了一个棋盘,他想在棋盘上摆放 ...

  4. ybtoj 12F

    求值的话改为求解前缀和的值,通过两个前缀和相减即可得到每个值. 每次询问相当于给一个方程. 一共有 $n$ 个未知数,因此需要 $n$ 个方程,同时每个数都必须至少在方程中出现一次. 最小生成树求解即 ...

  5. Js:当前日期格式化与比较大小

    //日期格式转换 getCurrentTime() { var date = new Date();//当前时间 var year = date.getFullYear() //返回指定日期的年份 v ...

  6. Django数据迁移介绍

    1.简介 迁移是 Django 将你对模型的修改(例如增加一个字段,删除一个模型)应用至数据库表结构对方式 2.基本命令 python manage.py migrate---负责应用和撤销迁移 py ...

  7. Qt Windows上实现毛玻璃效果

    首发于我的个人博客:xie-kang.com 博客内有更多文章,欢迎大家访问 原文地址 前言: 很多人看到这个需求的第一想法都是录制软件窗口后的桌面内容,并且加上个高斯模糊就能实现了. 思路没有错,操 ...

  8. codec

    1.codec究竟是什么 音频解码芯片:Audio codec,又叫声卡:本质就是ADC和DAC 2.codec的作用 在移动设备中,codec的作用可以归结为4种,分别如下: playback:对P ...

  9. 一天吃透Git面试八股文

    什么是Git? Git是一个版本控制系统,用于跟踪计算机文件的变化.Git是一个跟踪计算机文件变化的版本控制系统,用于帮助协调一个项目中几个人的工作,同时跟踪一段时间的进展.换句话说,我们可以说它是一 ...

  10. 干货来袭!3天0基础Python实战项目快速学会人工智能必学数学基础全套(含源码)(第3天)概率分析篇:条件概率、全概率与贝叶斯公式

    第1天:线性代数篇:矩阵.向量.实战编程 第2天:微积分篇:极限与导数.梯度下降.积分.实战编程 第3天:概率分析篇:条件概率与全概率.贝叶斯公式.实战项目 目录 前言 一.概率与机器学习 1.1 概 ...