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 条评论
登录 后参与评论

相关文章

来自专栏大内老A

事件(Event),绝大多数内存泄漏(Memory Leak)的元凶[下篇] (提供Source Code下载)

在上篇中我们谈到:将一个生命周期较短的对象(对象A)注册到一个生命周期较长(对象B)的某个事件(Event)上,两者便无形之间建立一个引用关系(B引用A)。这种...

1867
来自专栏数说工作室

正则表达式的“阿赖耶识”| 【SAS Says·扩展篇】正则表达式

阿赖耶识...为宇宙万有之本,含藏万有,使之存而不失,故称藏识。又因其能含藏生长万有之种子,故亦称种子识。 ——《佛光大辞典》 佛家说人有九识,除眼、耳、鼻、舌...

3203
来自专栏Java帮帮-微信公众号-技术文章全总结

数据库三大范式【面试+工作】

设计良好结构的数据库,可以有效减小数据冗余,减少增删改中出现的问题。深入理解数据库设计的三范式,对于设计“健壮的数据库“十分有必要。数据库三范式是设计数据库 时...

3344
来自专栏数说工作室

3. call PRXSUBSTR () | 庖丁解牛切割数据!

【SAS Says·扩展篇】庖丁解牛割数据! | 3. call PRXSUBSTR () 0. 前集回顾 1. 新的问题 2. 初识 PRXSUBSTR() ...

3385
来自专栏PHP技术

编程语言中的闭包

首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天...

3134
来自专栏数说工作室

庖丁解牛切割数据!| 【SAS Says·扩展篇】

【SAS Says·扩展篇】庖丁解牛割数据! | 3. call PRXSUBSTR () 0. 前集回顾 1. 新的问题 2. 初识 PRXSUBSTR() ...

3266
来自专栏青枫的专栏

day03_js学习笔记_03_js的事件、js的BOM、js的DOM

421
来自专栏CSDN技术头条

关于设计模式的思考

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

3476
来自专栏腾讯IVWEB团队的专栏

重构代码的Tricks

js的设计模式是针对于整体代码的设计是否合理,给出了一些具体的解决办法。 而重构代码就是依赖于设计模式而实现的一个必要手段,可以说设计模式就是重构代码的目标,但...

2601
来自专栏企鹅号快讯

什么叫代码的可读性?为什么说Kotlin的可读性比Java好?

不久之前,我看了一篇文章,大意是Kotlin与Java之间的对比,像这种文章,我一般是直接忽略的,但是那天我还是打开了,然后就看到一个非常吃惊的结果。 里面有一...

2137

扫码关注云+社区