用户:亦舟查看:0 回复:5 评论:0 创建时间:2018-01-05T17:09:12
【前言】
很多人此前肯定听说过面向对象编程,然而对这个概念模糊不清。所以这次讲堂给大家介绍一下Python的对象••• •••
【正式开始】
一、初步认识对象
首先,你要理解对象(Object)和类(Class)到底有什么区别,其实这两个东西没有多大的差别,对象是是指一个特指的实物,而类是对象的模板。
1、牧羊犬和狗有什么区别
这听起来可能有些可笑,但仔细想想发现问题并没有那么简单。狗是狗,牧羊犬也是狗,好像并没有多大的差异。但仔细想一想牧羊犬和狗的其他种类也不同,比如牧羊犬和拉布拉多就不一样。所以按照严格意义来说,它们确是不一样的东西。
现在我们举一个形象的例子,来看一下到底是怎么一会事
2、Fido和牧羊犬有什么区别
很久很久以前,在一家宠物医院里,一个大笼子里有三只牧羊犬,它们叫“Fido”“Barlow”“Dean”。Fido是一只牧羊犬,这点是不可否认的,那也就是说Fido是牧羊犬的“实例对象“。而Barlow和Dean也是牧羊犬的一个实例,都是以牧羊犬的属性来创建的,只是它们的名字不一样。
这样牧羊犬就是一个类,这三只可爱的小狗就是三个对象。那么牧羊犬这个类有一些特点是任何牧羊犬都有的(包括这三只):较大的身体,很高的智商,不喜欢叫等等
那么现在继续讲故事。就在这时,一位女顾客走进了这家宠物医院,对店老板说:“我想要一只牧羊犬,麻烦一下”“给,女士”,店老板想了想,把可怜的Fido从笼子里揪了出来。那么这位女顾客想要一只牧羊犬的一个实例(牧羊犬在前面所说是类,但它也是狗的一个实例),然后又把这个叫Fido的对象给带了回家。
现在大家应该也了解了不少了,最后再把总结一下:Fido、Barlow、Dean是牧羊犬这个类的成员,而牧羊犬又是狗的成员。
Python中的对象也是如此(哇,终于上代码了),一个对象的特征称为“属性”,一个对象的行为称为“方法”。我们先看一下“Collie”这个对象:
以上代码定义了类Collie的属性和方法,但还不是一个完整的对象,需要用这些类创建一个正真的对象(Objects),也叫实例对象。 但是这听起来好像还是有点抽象,我们再举一个不恰当的栗子:我可以把每一个类看成牧羊犬,牧羊犬这个品种你是看不见也摸不到的,只能直到它大概是什么样,我们需要把牧羊犬这个类实例化成一个对象。
那么废话就不再多说了,我们接着看一看这个Collie到底有什么卵用:
先运行这个.py文件,接着让Fido这个对象可调用这个类里的内容,其实很简单
Fido = Collie()
如果要调用对象里的方法,使用(.)操作符即可 接下来输入以下代码:
这样我们就成功的让Fido完成了eat,run,sleep这三个方法
二、Self是啥
经过前面的讲解,大家应该已经初步认识了对象,但有些萌新可能不明白为什么每个方法里都有一个self来作参数。(self中文:自己)
大家知道,Python的一个类可以创造无数个对象,就像根据牧羊犬的特性来创建一个真正的实物。每当一个对象的方法被调用时,对象会将自身的应用作为第一个参数传给该方法,那么程序就知道要操作哪个对象的方法了。也就是这个类被实例化很多对象时,那些对象各自用各自的数据。
再通过这个栗子感受一下:
接下来用类Test实例化x,y,z三个对象,再分别调用类里面setName,hello两个方法:
那么本期少院士讲堂就到这里啦,下期再见!