【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 nameab),那么ab类有相同的方法,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


阅读全文
0 0