首先,恭喜你,跟着小K,一路过五关斩六将,来到今天的课堂。
回首以往,我们在Python江湖中,已经走了很远很远,脑海中的代码越来越多,解决问题的能力越来越强,并且,到现在我们通过上节课与雍正爷一起整治bug后,我们的能力越来越强,看到代码错误时,能够脸不红心不跳,慢慢解决。
山登绝顶我为峰,这节课,我们要向着音乐与远方奋进。
在这节课,我们会接受一种全新的编程思维:面向对象编程,为你开启一个新的大门。
面向对象编程,我会呀,就是对着男朋友/女朋友编程啊。
NO,NO,NO,面向对象编程可不是对着男女朋友编程,而是一种思维模式。
举个例子,还是洗衣服:要想洗衣服,用之前编程思维来想,那就是把衣服放入洗衣机,倒入洗衣液,然后点击洗衣机的开始按钮,最后洗完把衣服晾干。这种通过洗衣服的过程来进行思考问题的方式,叫做面向过程编程。
而面向对象编程,是一种以对象为中心的编程思想。它不需要去考虑过程,而是考虑过程中能够所需要的对象,比如在这里,衣服\洗衣机\洗衣液都是对象。
江湖秘籍:万物皆对象,面向对象编程中,将现实中所有的事物都看做对象…
也许你现在还不能完全体会面向对象编程,那你就先记住,万物皆对象,所有的现实事物都是对象…
来,看个小游戏。
比如上面这个消消乐小游戏,玩家通过移动鼠标来控制方块的移动进行消除。这就是通过Python编程完成的游戏。而完成这个游戏,就需要我们使用面向对象思维方式来考虑问题。我想,你也可以在学习Python结束后,尝试完成一些小游戏。
下面就开始我们这次征程旅途。
快上车,下面我们就要向面向对象的山峰进军了。
征途第一站:“类”
当你看到“类”这个字,第一想法是啥?想到了什么?
分类?归类?人类?鱼类?动物类?植物类? OK,没问题。我们经常会用”类”这个字来划分一个一个群体。
现在,请你想想,能否把身边的物品划分到一类中?
有家电类,家具类,床上用品类,陶瓷类,金属类,视频类 ……生活中的物品可以划分到不同的类中。
在点开购物网站,每次去网购的时候,是不是也被各种种类的物品所包围?
这就是物以类聚,类:就是多个类似事物组成的群体的统称。类能够帮助我们快速理解和判断事物的归属。
在Python江湖中,我们从一开始,就接触了类,不信,运行一下下面代码:
#直接运行代码
print(type('666')) # <class'str'>
print(type(6666)) # <class'int'>
print(type([6666])) #<class'list'>
运行上面代码后,我们发现,'666’属于’str’字符串类;6666属于’int’整数类;[6666]属于’list’类。
类之所以称为类,就是因为类下面有无数个相似却不同的个例。比如说,你的iphone手机与我的android手机,都属于手机类;岳云鹏与郭麒麟,都属于明星类;隔壁老樊与张碧晨,都属于歌手类。
在Python的编程江湖中,每个类都有很多实例。比如520、1314都是整数类;3.1415926、9.85都属于浮点数类;‘hi’、'hello’都属于字符串类。
在Python的江湖中,我们把类的个例叫做“实际的例子” 简称“实例”。
到此为止,我们已经接触了两个概念,类与实例。
江湖秘籍:类就是统称,一类物品的统称。实例就是一个具体存在特指的一个事物。相似的实例就可以归到同一类中。
有了这个基础,我们就可以到下一站:“对象”。
一切皆“对象”
再说一遍,这里的对象可不是男女朋友,而是面向对象编程中的对象。
在Python江湖中,它把所有的事物都称为对象, 对象包含类与实例;也就是说,类叫做对象,实例也叫做对象。比如str是类对象,'hello’就是实例对象。 一切皆对象。生活中,无论是类还是实例,都可以当成沟通的对象。
例如:我们去KTV唱歌的时候会说“音乐歌曲很丰富”;还会说,“我唱一首歌曲《情深深雨蒙蒙》”;前者说的歌曲就是类对象,后面说的歌曲《情深深雨蒙蒙》就是实例对象。
在Python江湖中:
现在相信大家能够区分类\实例\对象三者了。
创建类与调用类
为了大家加深对类\实例\对象的理解,我们开启面向对象编程。
我们都是音乐人
羽泉、你、我都是音乐人------这句话,在Python江湖中翻译过来就是: 羽泉、你、我都属于“音乐人”这个类,羽泉、你、我都是“音乐人”这个类中的实例;我们都存在一些相同点:喜欢音乐、艺名、会唱歌、能跳舞。
这些共同点,就是我们区别于其他类的依据。其实,我们还可以对这些相同点进行细分:
第一种,用来描述事物性质的,比如:喜欢音乐、艺名;
第二种,用来描述事物能做什么,比如:会唱歌、能跳舞。
在Python江湖中,我们把第一种共同点称为属性(what),第二种共同点称为方法(how)。
比如,我们认识的字符串,属性有:引号,下标;方法有:都可以进行拼接操作。
Python中,每个类都有自己的独特的属性attribute和方法method,是这个类的所有实例都共享的。换言之,每个实例都可以调用类中所有的属性和方法。
在Python中,各个类的属性与方法需要我们自行创建。(当然也有一些属性与方法是Python设置好的,我们可以直接用。)
类的创建
接下来,我们定义一个“音乐人”类。
先来看一下下面代码:
class Musician:
loveMusic = True
def sing(self):
print('我在唱歌')
是不是so easy?音乐人类,属性是loveMusic值为True;方法是sing()可以打印“我在唱歌”。
我们具体解释下: