Python Class 初级教程

来源:SOHU  责任编辑:小易  

原标题:Python Class 初级教程

Hello, 各位小伙伴们,108到现在还学的开心吗?

听说你们已经精通了loop,list,dictionary的运用,也通过了midterm

的磨练觉得自己已经是Master in 108了!

过来人的一句话图样图森破 Too Young Too Simple

(以下内容涉及深度剧透,请做好准备后进行观看)

作为108后半学期的重点你们即将接触到 Class的设计

这是在108中最为核心也是在148中会重点讲解的一个topic!

/1/ 什么是 Class ?

A:108已经接触到了许多的data type,有int, str, list,dict, 每一个都有许多的method可供使用,如果只是通过这些data type来进行储存单一数据这并不会是一个难题。

但是如果通过已经学过的知识来表示一个学生来储存他的姓名,学生号,年纪,性别, GPA这种时候要怎么办?在108现阶段有以下三种方法。

[1] 写一个超级长的str来储存每一个学生相对应的数据

[2] 写一个list来储存数据

[3] 写一个dict来储存数据

技术角度来说都是没有问题的,但是随着需要储存的数据的增多,data也会相应的变长, 做一些operation的难度也会变大。

/2/ 可不可以使储存上面这些data变的简单呢?

A:么到底可不可以专门定义一个学生的存在来使储存上面这些data变的简单呢?

既然诚心诚意的发问了,那么为了防止世界被破坏, 为了守护世界的和平(以下省略)答案是可以的!而定义学生这个存在也是学习Class的敲门砖。

说到Class,就必须要做一次对Python这门语言的分析。 Python是一个Object-Oriented Programming Language(面向对象语言),对象这个概念渗透在了Python这个语言里, Python解决问题的核心原理一直是以一个object(对象)作为中心, 通过调用这个对象所支持的method来进行操作从而解决问题( 划重点!)。

/3/ 那么对象和Class到底有什么关联?

A:Class被称之为,它定义了一种存在或者一种概念。比方说所有人都是人类,类是一个较为抽象的定义,而对象则是把类这个定义具体化后的一个存在。比如说一个教授A,教授A他是一个把人类这个概念具体化后的存在,也就是一个对象。

举一个栗子,学生这个概念是可以被定义为一个类的,而这就是一个Class,是一种由User自己定义的data type。所有108中学到的data type 例如int, str, dict它们每一个都是一个单独的Class,所以创建Class也被认作为定义一个data type。

Python的语法定义Class是通过使用关键字class

class Student

这就是开始一个class的第一步

使用Class的一个原因是通过把所需要的细小的data合并在一起,成为一个更高等级的存在,学生这个例子中,规定了每一个学生需要的data有姓名,学生号,年纪,性别, GPA,而每一个学生所必要的data都被称之为Attribute(属性)将这些需要的属性存储在一个class中,就是在class的学习中的第二步。

存储data这个过程也就是初始化一个对象,通过给予每一个属性一个确切的值来不断丰富一个空白的对象,使其拥有多种属性,这就是初始化一个对象的核心。例如学生这个“类”, 我们可以让这个学生拥有他的名字,成绩,学生号等等, 这就能让我们的这个“学生”获取多种的属性。

初始化的这个步骤是通过在class内使用method来实现的。很多人搞不清function和method的差别,但其实两者并没有什么不同,所有在class内定义的function皆被称之为method。而初始化对象这个method有着特殊的命名,叫做 __init__(initialize的缩写)。

写到Python里的话就会是这样的一个例子:

这样 Student Class的__init__ method 就被写好了。对于self这个参数的存在,这是一开始困扰了许多人的一个难点。

/4/ self到底是什么?

A:打开天窗说亮话self就是每一个Class所对应的一个对象。在 “Student” 这个Class里self指向的就是一个student对象。

Python的语法规定所有method的第一个参数都需要是self。而self的作用至关重要,它的作用是定义了一个类所对应的对象(不是一个空白的类),在__init__中,self是一个空白的student,是一个什么都没有的自闭患者,通过使用“.”给这个空白的student添加一个属性,然后通过使用“=”(assign符)给予每个属性一个确切的数据。

self.student_names所代表的含义就是赋予一个空白的学生一个叫做student_name的属性,然后self.student name=name是将name这个data给与到student_name这个属性上,这样一个学生就拥有了student_name这个属性且student_name它所对应的value就是name这个data。

在结束__init__这个method后,一个学生将会拥有五种属性且每一个属性都会有一个确切的value。在我们的栗子中,student将会有 student_name他的名字,student_num他的学生号,grade他的年级,gender他的性别,gpa他的gpa。

大家在108学到的知识是function要被使用才有意义,那么怎样才能call上面所写的__init__这个method来创建一个学生的对象呢。创建对象的语法和定义一个variable的语法十分接近,要做的事有三步,第一步就是起一个变量名给它,第二步把每一个属性的value传进去,第三步扔给电脑去实现它。具体的语法是变量名 = 类名(所有data的value)。

student_a = Student(“YourFather”, “10000000001”, “first year”, “male”, 4.0)

这样实现一个学生对象就完成了,通过__init__这个method,一个名为student_a的学生被初始化了且它拥有着它所需要的五种属性和对应的value。

那么如果想要去access每一个属性要怎么做?语法是对象名.属性名。例如student_a.student_name,这样就可以access student_a的student_name这个属性了,到此class的最基础使用也就搞定了,但是费了这么久的时间创造出的class的好处在哪里呢,现在开始重点突出这一点。

这个属性了,到此class的最基础使用也就搞定了.但是费了这么久的时间创造出的class的好处在哪里呢?

/5/ 创造Class的好处在哪里?

上面提到过Python解决问题的核心是以对象为中心使用对象所支持的method来进行操作的,如果换一个角度来想,如果能够丰富一个对象所支持的method,那么这个对象所能做的事情就会变的多样了。

用大家都喜欢的gpa举一个例子,上面通过__init__确保了每一个学生都会有着自己的GPA, 但是如果对确切的GPA不感冒(毕竟不是所有人都是4.0学神,比起说3.7的GPA是不是说自己是A会更有范一点呢),那么创建一个将gpa转换为letter_grade的method,就可以让学生这个对象能支持的操作就多了一个。

再复习一下上面提到过每一个method的第一个参数都必须是self,self代表着一个对象,在__init__中,一个对象被初始化且对象所需要的属性被赋予了切确的value。从而之后的每一个method中self都不再是一个什么都没有的孤儿,它拥有着确切的属性和对应的value,这样就支持了它去实现一定的method,在to_letter_grade的method中,就通过access self的gpa这个属性和使用if进行了从gpa到letter grade的转化。如此一个student可以支持的method就又多了一个,各位小伙伴可以通过想象力来去继续编写来使student可以支持更多的method。

到此,关于class的基本操作就已经被向大家剧透的差不多了,也希望能给各位一个关于class的预习同时可以对大家在108后半的学习中有一个帮助。

科普结束

文字:Dino

排版:没有笔名的小可爱

校对:Julia 返回学路,查看更多

责任编辑:

  • 本文相关:
  • 抓时间补弱科不熬夜抓效率
  • 如何利用假期提高中考作文水平?(图)
  • 2016高考生必看:每月高考大事备忘录
  • 备考2016高考:只有1%的高三学生知道这样做
  • 新高三开学了,艺术生该如何开始各科复习?
  • 作为一个过来人写给高三党的建议
  • 高三生的学习和生活应该是这样的!
  • 166中学高考文科状元张子秋:高三生要努力、自信
  • 高考微问答81期:新高三生怎么开始复习?
  • 高三考生培养十大学习习惯 可上名校
  • 新高三复习计划 助你快速提分
  • 2016年高考复习时的六点注意事项
  • 2016年高考改革下各科目备考攻略
  • 新高三必读 成绩提升应循序渐进
  • 高三新学期刚开始 学生别急着打疲劳战
  • 教育资格教育大全EDU资格考试考试高考考试EDU教育考试教育|教育|天文|地球科学|物理|农业|生物|社会学|培训|数学|科学技术|环境学|心理学|职业教育|升学入学|化学|外语学习|医学|语文|纺织|建筑学|出国留学教育科学艺术文学地球科学化学环境科学建筑学科技留学农业培训社会学生物升学数学天文学外语物理心理学医学语文职业教育美术书法外国文学戏剧中国文学教育/科学高考菁菁校园人文学科理工学科外语学习辅助考研/考证公务员留学/出国 考试 作业作业2作业3幼儿教育幼儿读物少儿英语唐诗宋词育儿理论经验育儿知识家庭教育小升初学科竞赛其它课程小学教育初中教育中考科学学科竞赛其它课程高中教育学科竞赛其它课程职业教育中职中专职高对口职业技术培训其他成人教育成人考试电大自考专升本远程、网络教育高等教育理学工学经济学管理学文学哲学历史学法学教育学农业医学军事艺术研究生入学考试院校资料其它人文社科法律资料军事/政治广告/传媒设计/艺术教育学/心理学社会学文化/宗教哲学/历史文学研究经管营销人力资源管理财务管理生产/经营管理企业管理公共/行政管理销售/营销金融/投资经济/市场工程科技信息与通信电子/电路建筑/土木城乡/园林规划环境/食品科学电力/水利交通运输能源/化工机械/仪表冶金/矿山/地质纺织/轻工业材料科学兵器/核科学IT/计算机互联网电脑基础知识软件及应用硬件及网络自然科学数学物理化学生物学天文/地理医药卫生临床医学基础医学预防医学中医中药药学农林牧渔农学林学畜牧兽医水产渔业求职/职场简历封面/模板求职/面试职业规划自我管理与提升计划/解决方案学习计划工作计划解决方案商业计划营销/活动策划总结/汇报学习总结实习总结工作总结/汇报党团工作入党/转正申请思想汇报/心得体会党团建设工作范文制度/规范演讲/主持行政公文表格/模板合同协议书信模板表格类模板饮食游戏体育/运动音乐旅游购物娱乐时尚美容化妆影视/动漫保健养生随笔幽默滑稽语文一年级语文二年级语文三年级语文四年级语文五年级语文六年级语文数学一年级数学二年级数学三年级数学四年级数学五年级数学六年级数学英语一年级英语二年级英语三年级英语四年级英语五年级英语六年级英语一年级其它课程二年级其它课程三年级其它课程四年级其它课程五年级其它课程六年级其它课程小学作文语文初一语文初二语文初三语文数学初一数学初二数学初三数学英语初一英语初二英语初三英语政史地初一政史地初二政史地初三政史地理化生初一理化生初二理化生初三理化生初中作文语文高一语文高二语文高三语文数学高一数学高二数学高三数学英语高一英语高二英语高三英语政史地高一政史地高二政史地高三政史地理化生高一理化生高二理化生高三理化生高中作文高考外语学习英语考试英语学习日语学习法语学习韩语学习其它语言学习资格考试/认证IT认证公务员考试司法考试财会/金融考试从业资格考试交规考试其它考试教学研究教学案例/设计教学计划教学反思/汇报PPT模板商务科技简洁抽象艺术创意可爱清新节日庆典卡通动漫自然景观动物植物中国风国外设计风格动态背景图表模板其它模板PPT制作技巧图片/文字技巧动画/交互技巧音频/视频技巧其它技巧笔试社交礼仪其它其它其它其它调查/报告法律文书调解书判决书起诉状辩护词家居家电社会民生 文库教育文档幼儿教育小学教育初中教育高中教育高等教育教学研究外语学习资格考试/认证成人教育职业教育IT/计算机经管营销医药卫生自然科学农林牧渔人文社科工程科技PPT模板PPT制作技巧求职/职场计划/解决方案总结/汇报党团工作工作范文表格/模板法律文书饮食游戏体育/运动音乐旅游购物娱乐时尚美容化妆家具家电社会民生影视/动漫保健养生随笔摄影摄像幽默滑稽 小学作文初中作文高中作文话题作文考试作文单元作文作文素材儿童教育 教学设计文库22 34 56 78 910 1112 1314 15文库214综合范文 教学方法综合教案英语学习学习中心教育资讯1教育资讯1 考试 课题研究课件下载考试试卷留学类日记语文教学资源托福知道 教育论文教育生活学习方法模拟考教育教育资讯1英语作文 日常工作资源公务员考试简笔画考试作文问答 资讯综合学习学习考试学习方法学习问答外语学习资格考试职场学习交流高考清华大学复旦大学毕业季厦门大学浙江大学武汉大学作文南京大学五道口职业技术学校翻译韩语英语英文名日语英语翻译教师资格证智联招聘前程无忧语文日记数学读后感读书笔记
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2018 www.xue63.com All Rights Reserved