题外话:好几个朋友和我提出最好能写一个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后面新定义很多函数(方法),调用的方法就是将变量赋值给某个类后,直接用变量.方法调用即可!本案例分享的都是没有传入实参的,下期再和大家分享更多的类的应用!
领取专属 10元无门槛券
私享最新 技术干货