博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。
一、背景
Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的面向对象程序设计基础。
二、面向对象程序设计思想
面向对象程序设计(Object Oriented Programming,OOP)的思想主要针对大型软件设计而提出,它使得软件设计更加灵活,能够很好地支持代码复用和设计复用,并且使得代码具有更好的可读性和可扩展性。Python完全采用了面向对象程序设计的思想,是真正面向对象的高级动态编程语言,完全支持面向对象的基本功能。因此,掌握面向对象程序设计思想至关重要。
三、设计案例对比
举个小栗子,编写程序,模拟学生选课,每选一门课程,将课程名加入到学生的所选课程中,同时将课程的学分累加到学生的总学分中。
stu = {'num':'201801','name':'Jack', 'credit': 0,'course':[]} #定义一个学生
cours1 = {'num':'01','name':'Python','credit': 3} #定义课程1
cours2 = {'num':'02','name':'C','credit': 4} #定义课程2
def choose(c): #定义实现选课功能的函数
stu['credit']+=c['credit'] #将课程的学分累加到学生的总学分中
stu['course'].append(c['name']) #将课程名加入到学生的所选课程中
choose(cours1) #学生选课程1
choose(cours2) #学生选课程2
print(stu) #输出学生信息
结果如下。
上面情况,每次需要课程,都要声明一个课程字典类,不灵活,此时最好的解决方法就是采用面向对象程序设计思路进行编程。使用面向对象思路实现上述问题时,可以将“学生”和“课程”分别看作两类对象,具体如下:
-
学生类:其特征包括学号、姓名、总学分和所选课程,行为包括选课;
-
课程类:其特征包括课程编号、课程名和学分。
有了这样的类后,我们可以很轻松地实例化多个学生和多门课程,执行选课操作时,也限制了只有学生能够进行选课操作。
例:用面向对象程序设计思路编写程序,模拟学生选课,每选一门课程,将课程名加入到学生的所选课程中,同时将课程的学分累加到学生的总学分中。
#定义学生类
class Stu:
#构造方法定义学生属性
def __init__(self,num,name,credit,course):
self.num = num
self.name = name
self.credit = credit
self.course = course
#定义学生选课方法
def choose(self,c):
self.credit+=c.credit
self.course.append(c.name)
#定义课程类
class Cou:
#构造方法定义课程属性
def __init__(self,num,name,credit):
self.num = num
self.name = name
self.credit = credit
stu_1 = Stu('201801','Jack',0,[]) #创建学生1
stu_2 = Stu('201802','Tom',3,['Math']) #创建学生2
cou_1 = Cou('01','Python',3) #创建课程1
cou_2 = Cou('02','C',4) #创建课程2
stu_1.choose(cou_1) #调用方法实现学生1选课程1
stu_2.choose(cou_2) #调用方法实现学生2选课程2
#输出各学生信息
print('学号:',stu_1.num,'姓名:',stu_1.name,'总学分:',stu_1.credit,'所选课程',stu_1.course)
print('学号:',stu_2.num,'姓名:',stu_2.name,'总学分:',stu_2.credit,'所选课程',stu_2.course)
结果如下。
四、参考
1、廖雪峰的官网
2、python官网
3、Python编程案例教程
五、总结
总的来说,面向对象程序设计是一种解决代码复用的编程方法。这种方法把软件系统中相似的操作逻辑、数据和状态以类的形式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的目的。
以上就是就是关于Python的面向对象程序设计基础的相关知识,可以参考一下,觉得不错的话,欢迎点赞、收藏、在看,欢迎微信搜索关注java基础笔记,后面会不断更新相关知识,大家一起进步。
?点击关注|设为星标|干货速递?
文章评论