继承->重写

class A(object):
def __init__(self):
print("super(B,self).__init__():运行A:init")
self.name = "cui" # # 父类的self变量同样存储到self中,在子类中使用self调用没一点问题 def C(self):
print("super(B, self).C():运行A:C,并调用D方法")
self.D() def D(self):
print("A:D") class B(A): # B继承了A
def __init__(self):
print("运行B:init")
super(B,self).__init__() # super().父类方法,可以直接应用父类方法
super(B, self).C()
self.age = 12 def D(self): # 通过继承实现方法重写, 这样不管是子类还是父类,只要调用D方法,那么只调用子类的方法,除非使用super().D()
print("D方法在子类B中被重写,所以A:C调用的是B:D")
print("B:D") b = B() # 运行结果如下
-----------------------
D:\install\python\python.exe D:/realsense_code/data_process/ex_rgb/dsfsd.py
运行B:init
super(B,self).__init__():运行A:init
super(B, self).C():运行A:C,并调用D方法
D方法在子类B中被重写,所以A:C调用的是B:D
B:D
-----------------------

多继承

== A1.init(self) 多继承的初始化方法,并且父类的self属性会放在self中==

如果多个父类中有相同名字的self变量则看为一个

class A1(object):
def __init__(self):
print("super(B,self).__init__():运行A:init")
self.name = "A1" # # 父类的self变量同样存储到self中,在子类中使用self调用没一点问题 def C1(self):
print("super(B, self).C():运行A:C,并调用D方法")
self.D() def D1(self):
print("A:D") class A2(object):
def __init__(self):
print("super(B,self).__init__():运行A:init")
self.name = "A2" # # 父类的self变量同样存储到self中,在子类中使用self调用没一点问题 def C2(self):
print("super(B, self).C():运行A:C,并调用D方法")
self.D() def D2(self):
print("A:D") class B(A1, A2): # B继承了A
def __init__(self):
print("运行B:init")
A1.__init__(self) # 多继承的初始化方法,并且父类的self属性会放在self中
A2.__init__(self) # 如果多个父类中有相同名字的self变量则看为一个
self.age = 12 def D(self): # 通过继承实现方法重写, 这样不管是子类还是父类,只要调用D方法,那么只调用子类的方法,除非使用super().D()
print("D方法在子类B中被重写,所以A:C调用的是B:D")
print("B:D") b = B()

除此之外,父类和子类的变量可以通过self相互调用

装饰器

详细请看:https://www.runoob.com/w3cnote/python-func-decorators.html#:~:text=装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数%2F类对象。 它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。 有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。 概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。 如果函数 bar,也有类似的需求,怎么做? 再写一个 logging 在 bar 函数里? 这样就造成大量雷同的代码,为了减少重复写代码,我们可以这样做,重新定义一个新的函数:专门处理日志 ,日志处理完之后再执行真正的业务代码

简单地说:他们是修改其他函数的功能的函数。装饰器的运行顺序,就是按照函数顺序执行就可以。至于用@ 符号,是用更短的符号实现函数分装。

@a_new_decorator == a_new_decorator(a_function_requiring_decoration)。

def a_new_decorator(a_func):
def wrapTheFunction():
print("I am doing some boring work before executing a_func()")
a_func()
print("I am doing some boring work after executing a_func()")
return wrapTheFunction def a_function_requiring_decoration():
print("I am the function which needs some decoration to remove my foul smell") a_function_requiring_decoration()
# outputs: "I am the function which needs some decoration to remove my foul smell" a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration)
# now a_function_requiring_decoration is wrapped by wrapTheFunction() a_function_requiring_decoration()
# outputs:I am doing some boring work before executing a_func()
# I am the function which needs some decoration to remove my foul smell
# I am doing some boring work after executing a_func()

Python编程知识的更多相关文章

  1. 【转载】Python编程中常用的12种基础知识总结

    Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...

  2. Python编程中常用的12种基础知识总结

    原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...

  3. Python 编程核心知识体系(REF)

    Python 编程核心知识体系: https://woaielf.github.io/2017/06/13/python3-all/ https://woaielf.github.io/page2/

  4. 《Python编程:从入门到实践》基础知识部分学习笔记整理

    简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...

  5. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  6. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  7. 学习Python编程的11个资源

    用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...

  8. 适用于 PHP 开发人员的 Python 基础知识

    Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...

  9. 学习Python编程的11个精品资源

    本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程 ...

随机推荐

  1. Ubuntu18.04编译Fuchsia

    编译环境 系统:Ubuntu 18.04.1 LTS 64-bit 内存:8 GiB CPU:Intel Core i5-4200M CPU @ 2.50GHz × 4 1.安装编译环境 sudo a ...

  2. kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)

    目录 ·  . 一.更新系统内核(全部节点) ·  . 二.基础环境设置(全部节点) ·  . 1.修改 Host ·  . 2.修改 Hostname ·  . 3.主机时间同步 ·  . 4.关闭 ...

  3. Echart可视化学习(五)

    文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 常见的数据可视化库: D3.js ...

  4. 日志通过脚本导入到HDFS当中

    可以关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) 利用shell脚本定时备份日志数据到HDFS上(适合日志数据比较少的时候) 时间命令 d ...

  5. Mysql高性能优化

    一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在执行 SQL 语 ...

  6. nuxt中iview按需加载配置

    在plugins/iview.js中修改 初始代码如下 import Vue from 'vue' import iView from 'iview' import locale from 'ivie ...

  7. Javascript中常用事件集合和事件使用方法

    Javascript中常用事件集合和事件使用方法 一.事件绑定 格式: 事件源 . on事件类型=事件处理函数 事件绑定三要素 1.事件源:和谁绑定 2.事件类型:什么事件 3.事件处理函数:触发了要 ...

  8. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  9. python闭包函数&装饰器

    一.函数引用 函数可以被引用 函数可以被赋值给一个变量 def hogwarts(): print("hogwarts") # hogwarts() # 函数调用 print(ho ...

  10. vuecli学习01 - 环境搭建

    到这个链接下载nvm的安装包:https://github.com/coreybutler/nvm-windows/releases. 然后点击一顿下一步,安装即可! 安装完成后,还需要配置环境变量. ...