【Python基础教程笔记(三)】抽象,更加抽象和异常
来源:互联网 发布:linux系统巡检报告 编辑:程序博客网 时间:2024/05/29 08:51
抽象,更加抽象和异常
1介绍
本节将记录一些类和异常的知识点。
抽象指的是方法,和方法有关的也就是参数,重载,作用域等等。
更加抽象指的是类,牵涉到多态,封装,继承。
异常指的就是异常。
面向对象编程的思想在很多种高级语言中都存在,可能在某些细节上有所不同,但是整体上都是一致的。
2抽象
2.1创建函数
Def 函数名(参数):
很简单,不过需要注意的一点是当将可变的数据结构(如,列表)作参数时,与普通变量作参数是不一样的。如下图:
等同于
是否与其他语言不太一样呢?是否违反了方法内语句块的作用域呢?这就像是参数接受的是指针一样,而不是形参的备份,这样很方便。如果想不修改传入可变的数据结构的值,那就传入其拷贝的版本,如,name0[]=name[:]。
如果传入的参数不是可变的数据结构,那么就要使用return来返回值了。
2.2收集参数
当某个方法需要多个参数,使用时,不仅要控制参数传入的个数,还要控制参数传入的顺序。
更加灵活,收集参数:
(1)*参数名:’*’的意思是收集其余的位置参数,并将其全部放在元组里。
(2)**参数名:’**’的意思是收集其余的位置参数,并将其全部放在字典里。
3更加抽象
3.1多态
对不同类的对象使用同一种操作,简而言之,不同的类型可以使用同一个方法,得到想要的结果。比如:count方法
3.2封装
封装是指向程序中的其他部分隐藏对象的具体实现细节的原则,它与抽象的概念类似。
没错,听起来就跟没说一样。简单点说,就是类内部的私有化,比如类内定义的某个方法,只能在类内访问,而不能在类外访问。
事实上,python并不支持私有化,从理论上来说,类内不到属性和方法,通过该类,在类外均能访问。但是,可以使用一些小技巧来达到私有特性的效果。
def __方法名(参数):
在方法名前使用双下划线。这样类外就无法访问了。事实上,这个小技巧并非真正的私有化,可以仍然通过实例名._类名__方法名()来访问。
3.3继承
指定超类,也就是基类,也就是父类。
Class 类名(基类名):
如果,存在多个基类如Class name(a,b),那么a,b类有相同的方法,a中的方法覆盖b中的方法,而不同的方法则同时存在。
#!/usr/bin/python3 #类定义class people: #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def __init__(self,n,a,w): self.name = n self.age = a self.__weight = w def speak(self): print("%s 说: 我 %d 岁。" %(self.name,self.age)) #单继承示例class student(people): grade = '' def __init__(self,n,a,w,g): #调用父类的构函 people.__init__(self,n,a,w) self.grade = g #覆写父类的方法 def speak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade)) #另一个类,多重继承之前的准备class speaker(): topic = '' name = '' def __init__(self,n,t): self.name = n self.topic = t def speak(self): print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic)) #多重继承class sample(speaker,student): a ='' def __init__(self,n,a,w,g,t): student.__init__(self,n,a,w,g) speaker.__init__(self,n,t) test = sample("AC",25,80,4,"Python")test.speak() #方法名同,默认调用的是在括号中排前地父类的方法
4异常
结构:
Try:
语句块
Except:
捕捉异常后执行
Else:
没有异常执行
源码:
#!/usr/bin/python3while True:try:x=int(input('x='))y=int(input('y='))vlaue=x/yprint('x/y=',vlaue)except:print ('Invalid input.Please try again!')else:break
- 【Python基础教程笔记(三)】抽象,更加抽象和异常
- 《Python基础教程》学习笔记 Chp7 更加抽象
- Python学习笔记【七】——《python基础教程》:: 更加抽象
- <<Python基础教程>>学习笔记 | 第07章 | 更加抽象
- Python基础教程第七章学习笔记——更加抽象
- 第七章-更加抽象——python基础教程(第二版)笔记
- Python学习笔记(七)更加抽象
- 《Python基础教程》学习笔记之[D8]更加抽象——类
- Python基础教程之第7章 更加抽象
- python基础教程---更加抽象,类,继承多态封装
- 第7章 Python笔记 更加抽象
- [Python 07] 更加抽象
- Python 更加抽象
- Python基础编程(七)更加抽象
- 学习《Python基础教程(第二版)》笔记9--抽象1
- 学习《Python基础教程(第二版)》笔记10--抽象2
- 《Python基础教程》学习笔记(6-7抽象)
- python基础教程_学习笔记9:抽象
- 第一个页面
- WIN10 LOCALHOST 解析为 IPV6地址 ::1 的解决办法
- vue
- Tomcat 400错误:Invalid character found in the request target. 问题解决方法
- OkHttp封装
- 【Python基础教程笔记(三)】抽象,更加抽象和异常
- Awake()与Start()
- Servlet
- POSTMAN接口测试工具介绍
- java day08_day09基础梳理
- MongoDB (五):安全浅析
- MBR主引导扇区上,0扇区,512个字节,(主引导区一般在C盘,记录整个硬盘的情况;多系统其他盘也有引导区)
- 筛法求素数与欧拉函数
- 【bzoj1598】【 [Usaco2008 Mar]牛跑步】启发式搜索思路+spfa