python基础15-面向对象编程(2)

上篇我们介绍了Python面向对象编程的基本理论知识,这篇我们开始看如何实际定义类和如何调用类方法,在Python中定义类的关键字是class,我们就拿周边的事物说起,这样大家也比较容易理解,比如我们定义一个汽车类,如下:

以上代码我们定义了一个简单的汽车类,我们来逐行说明解释下代码, 大家知道def是用来定义一个函数的,那如果在类里定义一个函数,这个函数就称为方法,除了名字不同之外,我们之前学的关于函数的内容都适用于方法,所以在这里__init__()我们理解是一个函数,因为是在类中,所以我们叫它__init__()方法,如果是第一次接触,可能看着有点不习惯,因为这个方法前后都有二个下划线,跟我们平时看到的名称不大一样, 这种写法主要是避免Python默认方法跟自定义的方法发生冲突,所以我们可以不用管它形式,知道它本质就可以了,在Python中还有很多这种形式的特殊方法,另外__init__()方法也被称为构造器,它用于根据类的定义创建实例。

这里__init__()定义中包含四个形参,其它参数都容易理解,我们着重看第一个参数self,在Pythonl类中,self不可缺少,并且它必须放在其它参数前面,因为python在调用__init__()方法创建实例时,将自动传入实参self, self是类实例方法中引用方法所绑定的实例,它是指向实例本身的引用,让实例能够访问类中的属性和方法,当我们创建car实例时,我们只需要给后面三个参数就可以了,self因为会自动传递,所以我们不需要再传递。

接下来我们创建一个实例,看如何调用:

打印出:

我们创建一个实例my_car,  我们传递公司,品牌,时间参数, self我们并没有传递, 然后实例调用方法get_car_info()打印出了汽车实例的信息。

这个类基本是最简单的类了,大家看到在类中的方法都需要self参数,这种方法叫实例方法,在类中除了实例方法,还有一种叫静态方法,静态类方法无需传入self函数,但需要@staticmethod修饰,类和实例都可以访问静态方法。

以上我们拿生活的汽车来举例说明,在运维中的应用基本也是这个思路去实现,比如数据库类,我们可以在__init__()方法里把数据库的名称,IP,端口,数据库用户,密码等放到这个方法里,再定义一个方法根据这些去连接db,然后返回连接对象来对数据库进行操作,这个就是实现一个DB类的基本思路。

这篇我们就简单说一下类和实例内容,另外类会有父类、子类区分,那么关于子类和父类继承关系以及子类重写父类方法内容我们会放到下篇去介绍, 下篇见~

发表评论