当前位置: 首页 > news >正文

《零基础入门学习Python》学习过程笔记【38类的继承】


注:构造函数__init__(self)不能有返回值

1.如何继承类A?只需在定义类时,在类名后面添加括号,括号内写上A 

即class B(A):


2.子类继承父类的什么?一个子类可以继承它父类的任何属性与方法


注意!!!!!!!!!!!!子类会继承父类的构造函数!!!!!!!!!!!!!!!!!

>>> class A:
	def __init__(self):
		self.a=1
		self.b=1
	def f(self):
		print(self.a)
		print(self.b)

		
>>> class B(A):
	pass
>>> b.f()   #类B继承了类A的构造函数,否则根本没有a,b,以至于根本无法输出...
1
1




>>> class A:
	a=1
	def f(self):
		print("正在调用A类中的方法f")

		
>>> class B(A):
	b=1

	
>>> b=B()
>>> b.a
1
>>> b.f()
正在调用A类中的方法f

3.如果子类中定义了与父类同名的属性或方法,则父类中属性或方法会被覆盖(和C++相同)

>>> class C:
	a=1
	def f(self):
		print("正在调用父类中的f方法")

		
>>> class D(C):
	a=2
	def f(self):
		print("正在调用子类中的f方法")

		
>>> hh=D()
>>> hh.a
2
>>> hh.f()
正在调用子类中的f方法


4.pass?

就是什么也不做,用来占位的...

例如

>>> def a():



	
这个函数的定义不会随着你按下两次回车结束..它会不断打印出空行

但是这样就OK

>>> def a():
	pass

>>> 




但是写上pass就不会报错


定义类也是同样的情况

>>> class A:




	


但这样就OK
>>> class A:
	pass

>>> 


5.as?

当引入一个类库时,可以给类库起个别名

>>> import random as r
>>> r.randint(1,10)
10


6.如何在子类的构造函数中引入父类的构造函数? 

方法一:在子类的构造函数中添加 父类名.__init__(self)

>>> class A:
	def __init__(self):
		self.x=1
		self.y=1

		
>>> class B(A):
	def __init__(self): #这里的self指的是子类的实例对象
		A.__init__(self)
		self.z=1

		
>>> b=B()
>>> b.x
1
>>> b.y
1
>>> b.z
1


方法二:super()方法 

super()方法会自动帮我们找到父类的名字,自动传入self参数

>>> class B(A):
	def __init__(self):
		super().__init__()
		self.z=1

		
>>> b1=B()
>>> b1.x
1
>>> b1.y
1
>>> b1.z
1


7.多重继承?

可以同时继承多个类的属性和方法。例如同时继承B,C,D: class A(B,C,D):

>>> class A:
	def f1(self):
		print("我是A")

		
>>> class B:
	def f2(self):
		print("我是B")

		
>>> class C:
	def f3(self):
		print("我是C")

		
>>> class D(A,B,C):
	pass

>>> d=D()
>>> d.f1()
我是A
>>> d.f2()
我是B
>>> d.f3()
我是C

8.如何去掉父类中的某个函数?同名pass覆盖(不知道明显提出来有什么必要,竟然鱼C说了,我也就记一下)

>>> class A:
	def f(self):
		print("A")

		
>>> class B(A):
	def f(self):
		pass





转载于:https://www.cnblogs.com/iamjuruo/p/7470882.html

相关文章:

  • 制作毛玻璃效果
  • 设计模式——简单工厂模式
  • 吐血分享:QQ群霸屏技术教程(接单篇)
  • js全局变量,局部变量
  • 2017百度之星资格赛 1003 度度熊与邪恶大魔王 背包DP
  • 8086汇编之 CALL 和 RET指令
  • c# 多线程编程中AutoResetEvent和ManualResetEvent
  • 【Python】 配置文件相对路径软件自动执行的工作目录
  • [SDUT](3361) 数据结构实验之图论四:迷宫探索 ---DFS(图)
  • proxy汇总-1
  • 使用for循环输出九九乘法表
  • ffmpeg学习(二) 通过rtsp获取H264裸流并保存到mp4文件
  • 安装node.js和npm
  • 推荐几款谷歌浏览器的使用插件
  • webservcie学习之webservice是什么
  • C语言笔记(第一章:C语言编程)
  • express.js的介绍及使用
  • github从入门到放弃(1)
  • idea + plantuml 画流程图
  • IP路由与转发
  • linux安装openssl、swoole等扩展的具体步骤
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Spring Cloud中负载均衡器概览
  • vue数据传递--我有特殊的实现技巧
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 安装python包到指定虚拟环境
  • 彻底搞懂浏览器Event-loop
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 你不可错过的前端面试题(一)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 使用Swoole加速Laravel(正式环境中)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 小李飞刀:SQL题目刷起来!
  • 写代码的正确姿势
  • 移动端唤起键盘时取消position:fixed定位
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 源码安装memcached和php memcache扩展
  • 函数计算新功能-----支持C#函数
  • ​一些不规范的GTID使用场景
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (AngularJS)Angular 控制器之间通信初探
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (已解决)什么是vue导航守卫
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)JAVA中的堆栈
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net Core与存储过程(一)
  • .Net FrameWork总结
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET Remoting学习笔记(三)信道
  • .net对接阿里云CSB服务
  • .net下简单快捷的数值高低位切换