Python3面向对象

这篇文章主要对Python3.x中面向对象进行介绍

一、什么是面向对象

一个面向对象的例子

解释:

1、class Document定义了一个名为Document的类,这个类下面有三个函数。

2、其中init表示构造函数,当一个对象生成的时候会自动调用的函数。

3、这里有三个属性分别是title、author和context,分别代表标题、作者和内容。可以看到如果一个属性以开头,默认这个属性是私有属性。私有属性,在被类函数之外的函数访问和修改会报错。这也为下面为啥报错的原因。

二、类函数、成员函数与静态函数

  • 静态函数可以用来作呕一些简单独立的任务,通过在函数前面一行假如@staticmethod来表示,这里使用了修饰器的概念,后面会讲到。

  • 类函数的第一个参数一般为cls,表示必须传一个类进来。类函数最常用的功能是实现不同init的构造函数。类函数需要用装饰器@classmethod来声明。

  • 成员函数是用的最多的函数,第一个参数self代表当前的对象的引用,通过此函数,来实现想要查询/修改类的属性等功能。

三、继承

继承是指一个类有另一个类的特征。

这里,Document和Video有相似的地方,都有相应的标题、作者和内容属性。

这里我们抽象出一个Entity的类,来作为他俩的父类。

1、构造函数

每个类都有构造函数,继承类在生成对象的时候,是不会自动调用父类的构造函数的。

因此你必须在init()函数中显式调用父类的构造函数。他们的执行顺序是先子类的构造函数,然后父类的构造函数。

2、函数重写

这里可以看到get_context_length()函数。如果直接使用Entity生成对象,调用父类中的get_context_length()函数,就会被raise error中断程序的执行。这就叫函数重写,子类必须重写父类的函数,覆盖原函数。

四、抽象函数与抽象类

抽象类是一种特殊的类,不能够实例化,一旦实例化就会报错。

抽象函数定义在抽象类之中,子类必须重写函数才能使用。

抽象函数,是使用装饰器@abstractmethod来声明。