Python编程知识
继承->重写
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相互调用
装饰器
简单地说:他们是修改其他函数的功能的函数。装饰器的运行顺序,就是按照函数顺序执行就可以。至于用@ 符号,是用更短的符号实现函数分装。
@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编程知识的更多相关文章
- 【转载】Python编程中常用的12种基础知识总结
Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进 ...
- Python编程中常用的12种基础知识总结
原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时 ...
- Python 编程核心知识体系(REF)
Python 编程核心知识体系: https://woaielf.github.io/2017/06/13/python3-all/ https://woaielf.github.io/page2/
- 《Python编程:从入门到实践》基础知识部分学习笔记整理
简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...
- 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出
第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...
- python 基础知识(一)
python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...
- 学习Python编程的11个资源
用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...
- 适用于 PHP 开发人员的 Python 基础知识
Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...
- 学习Python编程的11个精品资源
本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程 ...
随机推荐
- Unity——ShaderLab实现玻璃和镜子效果
在这一篇中会实现会介绍折射和反射,以及菲尼尔反射:并且实现镜子和玻璃效果: 这里和之前不同的地方在于取样的是一张CubeMap: demo里的cubemap使用的一样,相机所在位置拍出来的周围环境图: ...
- hisql 高级功能数据检测将错误数据拦截在系统外 一
hisql github源码下载 git clone https://github.com/tansar/HiSql.git 在设计第二范式数据库时经常会把可能重复的数据单独做一种表关联,但是在写入表 ...
- Selenium_使用switch_to.window方法处理窗口切换(12)
想一下这样的场景,打开页面A点击一个链接,在一个新的窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来操作的元素在页面B中,此时脚本就会报错找不到元素.该场景需要使用到seleniu ...
- xshell 所选的用户密钥未在远程主机上注册;无法加载密钥
他山之石 https://zhuanlan.zhihu.com/p/92528287 安全起见,服务器最近的安全策略准备进行更改,逐渐由原来的密码登录更换为密钥登录认证. 于是今天把服务器上的id_r ...
- Go语言系列之标准库flag
Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数. ...
- Hive的导入导出和常用过滤语句的学习
原文: https://www.toutiao.com/i6769166601871688196/?group_id=6769166601871688196 数据的导入 load data [loca ...
- 灵雀云Kube-OVN进入CNCF沙箱,成为CNCF首个容器网络项目
昨日,云原生计算基金会 (CNCF) 宣布由灵雀云开源的容器网络项目Kube-OVN 正式进入 CNCF 沙箱(Sandbox)托管.这是全球范围内首个被CNCF纳入托管的开源CNI网络项目,也是国内 ...
- 《Flink SQL任务自动生成与提交》后续:修改flink源码实现kafka connector BatchMode
目录 问题 思路 kafka参数问题 支持batchmode的问题 参数提交至kafkasource的问题 group by支持问题 实现 编译 测试 因为在一篇博文上看到介绍"汽车之家介绍 ...
- 解惑rJava R与Java的高速通道
解惑rJava R与Java的高速通道 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒. ...
- 多种语言tcp编程
再次强调,最好socket编程 c#的tcpclient等封装无法对接android的socket服务器 c#的tcpclient等封装可对接java的socket服务器 python socket服 ...