Python读书笔记23(浅谈为什么要用类)

题外话:好几个朋友和我提出最好能写一个Python入门的合集版,我会尽快将基础知识分享完,然后重新整理一下过去分享的所有材料。

如果只是想学Python的数据分析,爬虫,不想了解复杂编程,可以略过剩下三篇的文章,本周只分享类的用法!前方高能!一个字“不好理解!”

今日闲扯正文:

正常本期要和大家分享类的使用的,但是自己纠结了好久要不要分享,纠结的原因是类这种用法针对Python编辑游戏或者编辑一些日常应用程序很有用,但是和我想要做的两个方向爬虫和数据分析其实关联不是那么大。

第二个问题就是为什么要有类,类这个东西到底是干嘛的,有什么存在意义!

我们先举一个例子!

我问上帝,我想要知道自己的分数,所以有了int型。

我问上帝,我想要知道全班的分数,所以有了列表。

我问上帝,我还想知道每个人得了什么分数,所以有了字典。

我问上帝,我想知道每个人的所有身高、体重、血压、颜值评分、睡觉否、吃饭否、婚否、性取向!

上帝和善的对我说!

上帝说完后,创造了类!

一、历史长河太长,我们从整型说起!

如果知道某个个体的分数的时候,我们一个变量即可;当我们想获取某个集体的分数的时候,就延伸到了列表,或者元组。列表(元组)虽然是有序的,但是我们不知道他们都是谁的。很多时候做数据分析用列表即可,当然后期数据处理其实用的更多的是和list很像的Series,和Excel很像的DataFrame(不知道是什么没关系,证明还有很多新东西可以学习)

学到列表基本上已经满足了我们的需求,直到有一天我想知道每个人的分数分别是什么!

二、了解个体信息,需要用到字典!

其实字典是怎么来的呢?其实字典就是从列表来的,那我们先用笨方法实现,一列存储姓名,一列存储分数,就解决了人与分数对应的问题!

红色字很多,大意就是列表可以实现,但是很麻烦,所以出现了字典。字典可以通过键值对的方式,快速的增删改查一对信息!

但是当我需要更多的信息的时候呢?比如上文上帝让我滚的那个问题!字典已经无法满足我们的需求,只能有更丰富的应用类来实现了。其实类并不是一种存储形式,所以和列表、字典放在一起并不是特别恰当,之所以这么任性,是希望告诉大家,类是满足我们现实中复杂应用的产物!

三、面向对象编程的产物--类

在面向对象编程中,编写表示现实世界中的事物或者场景。类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。

好啦!上面那段话理解起来一定尤为痛苦,我们直接来定义一个类吧!我们定义一个人!

class 类的名称():

def __init__(self, 属性1, 属性2):

self.属性1= 属性1

self.属性2= 属性2

上述代码中蓝色是不可变的,红色是可变的!

每个类初始化的时候和函数一样要定义一个名称,函数中可以设置传入的实参个数,类也是同理,不过类中是在def _init_中设置实参个数的。每个类初识定义的时候都要设置若干个初识属性,比如人,一生下来肯定有姓名和性别。大多数情况这两个属性都是不需要改变的,所以我们在定义一个人的时候就要告诉电脑我们定义的这个人的姓名和性别是什么!

类最不好理解的两点如下:

1、def __init__

备注:init两边是两个下划线,很多书印刷时候看不出来!我就没看出来!

def开头是定义函数用的,但在这里他不是函数,而是方法。方法是特殊的函数,使用在类内的函数称为方法。而def __init__又是更为特殊的函数(方法)。他是用来初始化类对象的所有属性的!

2、self

这个是什么意思呢,其实就是初始化用的。如果我用这个对象创造了一个人:阿狸。这个self就是阿狸的意思。self.name就是定义阿狸的名字叫阿狸!

不行,晕了!

假若我这样说你还不理解,请记住这样用就好了!

四、类的第一次定义与使用!

我们定义一个类后,可以将类初始化后赋值给一个变量,然后使用变量.属性就可以获取对应的返回值!

我们接下来可以给这个类赋值为更多的属性,比如我们给这个类定义睡觉、吃饭等方法!

五、方法的使用!

定义方法就是可以在自定义init后面新定义很多函数(方法),调用的方法就是将变量赋值给某个类后,直接用变量.方法调用即可!本案例分享的都是没有传入实参的,下期再和大家分享更多的类的应用!

原文发布于微信公众号 - 阿凯的Excel(akexcel)

原文发表时间:2018-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android 开发者

[译] Kotlin 揭秘:理解并速记 Lambda 语法

在奥地利旅行期间,我参观了维也纳的奥地利国家图书馆。特别是国会大厅,这个令人惊叹的空间感觉就像印第安纳琼斯电影中的一些东西。房间周围的空间是这些门被装在架子上,...

690
来自专栏带你撸出一手好代码

JavaScript贪食蛇游戏制作详解

之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读。 代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑...

3289
来自专栏互扯程序

Java8函数式编程实践精华

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

853
来自专栏CSDN技术头条

关于设计模式的思考

为什么叫设计模式 什么是设计模式 设计模式最初是被 GoF 于1995年提出的。GoF 全称是Gang of Four(四人帮),即 Erich Gamma,R...

3466
来自专栏怀英的自我修炼

怀英漫谈2-JS语法初涉

今天碰了一下JS的语法,想与你聊聊这个。这篇文章适合前端设计师,不过在文末,我也为你准备了一些感悟,有兴趣的不妨跳到最后一看。 总体来看,JS的语法和Java的...

34210
来自专栏鹅厂优文

Python 工匠:善用变量来改善代码质量

我一直觉得编程某种意义上是一门『手艺』,因为优雅而高效的代码,就如同完美的手工艺品一样让人赏心悦目。

7309
来自专栏Crossin的编程教室

【Python 第59课】 正则表达式(5)

听说有人已经开始国庆假期了,甚至还有人中秋之后就请了年假一休到底,表示羡慕嫉妒恨!今天发完这课,我也要进入休假状态,谁也别拦着我。 来说上次的习题: (021...

3108
来自专栏Coding01

浅谈 Laravel Collections

这两天看了两本书《Laravel Collections Unraveled》和 《Refactoring to Collections》。

822
来自专栏我是攻城师

偏执却管用的10条Java编程技巧

3207
来自专栏ACM小冰成长之路

KWIC-C/C++实现

吐槽 最近我们 JavaJava 老师不知道为啥非要我用 C/C++C/C++ 来实现 KWICKWIC,但是因为没有上过课,不知道这个东西是干嘛的,所以想网上...

18310

扫描关注云+社区