在之前的文章里,经常会提到“Python的一切都是对象”,可能对于刚接触到面向对象的程序设计的编程人员来说,还是比较抽象的。下面我们会在这篇文章里,尽可能用通俗易懂的方式,向大家介绍Python中的面向对象的编程思想,首先我们提出几个概念:
类:描述相同属性和相同方法的集合;对象:通过已定义的类实例化的数据结构;实例化:对一个类实例化出来的数据结构就叫做类的一个对象,是一种行为;类的方法:每个类都有自己的行为,这种行为叫做类的方法;类的变量:每个类都有自己的属性,这些属性称为类的变量;
为什么要把程序设计成为面向对象的思想呢?我们举个例子:
假设你是一个快递公司的老板,每天都有上万件快递需要收发,你一个人需要一件一件的去操作,很显然,你是忙不过来的,所以,你雇了20个员工为你派送快递,而你只需要管理这二十个员工,就可以安心的在家里休息啦!
程序也是这样,假如在写程序的过程中,遇到什么功能就写什么功能,只管过程,不懂管理,最后会把自己累死;所以,我们也要像上面的例子那样,学会在代码里管理,也就是面向对象,像上面的例子中,“员工”,就叫做一个“类”;而这具体的二十个人,是属于这一类的,每个人都是一个“对象”;每个人都有共同的目标——送快递,收快递等等,这样的行为叫做“类的方法”,而所有的员工都有自己的工号、姓名、性别等等属性,这些属性称之为“类的变量”;
面向对象的编程的思路有很多的优点:
维护简单——你只需要管理这一类送快递的人;
代码重用——你可以制定一套规则,每个新来的员工都按照这个规则做事,无需多费口舌;
封装性好——你只需指派某个员工干活,不必关心他是怎么干的;
等等。。好处多多,是目前市面上大力推广的最流行的编程思想;
下面我们进入实战,还是以上面快递公司的例子为例,一步一步的创建“员工”这样一个类:
创建一个类
在Python里,创建一个类的方法很简单,利用关键词“class”就可以创建一个类,写法如下:
创建一个类
语法:
关键词“class”后面跟类的名字,名字后面跟“:”;第二行一般是该类的说明,增加代码可阅读性;可以在类里面增加这个类的类属性,类属性在这个类的所有实例中都将共享其数据;类的构造函数“__init__”是类的一个特殊的方法,当类在实例化时会自动调用该方法;“self”关键词表示“自己”,也就是指的当前类的实例;在类的后面自定义各种方法,例如,上面定义了一个派送包裹的方法;
实例化
“员工”这个类的雏形已经有了,现在我们要招聘员工了,也就是对类进行实例化;
就是这么简单!在上面的例子中,“Employee1”就是一个实例化的对象,用大白话说,这就是一个员工。当他调用员工类的“Employee("Tom", 25)”,就会进入到这个类里的构造函数“__init__”,“self”参数不需要填写,它会自动指向当前的实例,“姓名”和“年龄”参数也是通过“__init__”方法来接收。通过“Employee1.”的方式来访问该实例的属性,也可以用相同的方法来访问实例的方法;
对象的销毁
为什么要销毁?举个例子,假如这个员工离职了,作为老板的你是不是会把他的所有信息将公司里删掉呢?那么销毁一个对象的方法交给析构函数来完成:
类的析构函数
析构函数“__del__”在对象销毁的时候被调用,那么,销毁一个对象的方法是:
销毁一个对象
小结
面向对象的编程思想估计是大多数高级编程语言在学习的时候都要面对的,今天我们也初步掌握了Python中面向对象的基础部分,包括如何定义一个类,实例化一个对象,使用对象访问方法等等,在以后的日子里我们还会进一步介绍面向对象更高级的部分,包括三大基本属性:封装、继承、多态等。请持续关注我们,谢谢!