Python3面向对象

这篇文章主要对Python3.x中面向对象进行介绍
一、什么是面向对象
一个面向对象的例子

解释:
1、class Document定义了一个名为Document的类,这个类下面有三个函数。
2、其中init表示构造函数,当一个对象生成的时候会自动调用的函数。
3、这里有三个属性分别是title、author和__context,分别代表标题、作者和内容。可以看到如果一个属性以__开头,默认这个属性是私有属性。私有属性,在被类函数之外的函数访问和修改会报错。这也为下面为啥报错的原因。
二、类函数、成员函数与静态函数
1、静态函数可以用来作呕一些简单独立的任务,通过在函数前面一行假如@staticmethod来表示,这里使用了修饰器的概念,后面会讲到。
2、类函数的第一个参数一般为cls,表示必须传一个类进来。类函数最常用的功能是实现不同init的构造函数。类函数需要用装饰器@classmethod来声明。
3、成员函数是用的最多的函数,第一个参数self代表当前的对象的引用,通过此函数,来实现想要查询/修改类的属性等功能。
三、继承
继承是指一个类有另一个类的特征。

 

这里,Document和Video有相似的地方,都有相应的标题、作者和内容属性。
这里我们抽象出一个Entity的类,来作为他俩的父类。
1、构造函数
    每个类都有构造函数,继承类在生成对象的时候,是不会自动调用父类的构造函数的。
因此你必须在init()函数中显式调用父类的构造函数。他们的执行顺序是先子类的构造函数,然后父类的构造函数。
2、函数重写
    这里可以看到get_context_length()函数。如果直接使用Entity生成对象,调用父类中的get_context_length()函数,就会被raise error中断程序的执行。这就叫函数重写,子类必须重写父类的函数,覆盖原函数。
四、抽象函数与抽象类

抽象类是一种特殊的类,不能够实例化,一旦实例化就会报错。
抽象函数定义在抽象类之中,子类必须重写函数才能使用。
抽象函数,是使用装饰器@abstractmethod来声明。