【Python基础教程笔记(三)】抽象,更加抽象和异常

本文深入探讨了面向对象编程中的核心概念,包括抽象、多态、封装与继承,并通过具体的Python代码示例展示了如何实现这些概念。此外,还介绍了如何处理程序运行过程中可能出现的异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象,更加抽象和异常

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/python3
while True:
	try:
		x=int(input('x='))
		y=int(input('y='))
		vlaue=x/y
		print('x/y=',vlaue)
	except:
		print ('Invalid input.Please try again!')
	else:
		break


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值