面向对象小结

面向对象:面向对象看就的是对象二字,就是比如在创造的时候,一些没有的对象也都可以创造出来。

面向对象的优点有提高了扩展性,复用性,维护性。但也有缺点,缺点:写问题比面向过程复杂。

对象:就是属性与方法的结合体。其中属性可以说是变量,方法可以说是函数。

类就是一系列相同特征行为的对象的结合体,用class  加类名。类是一种抽象的概念,对象是确切存在的

所以可以说先有对象再有类。

类中有初始化方法__init__(self):是用于为对象的属性设置初始值的函数。

执行过程:在创建对象时会申请新的内存空间用于保存对象数据,接着自动调用init函数

初始化函数第一个参数必须是self。

属性的查找顺序先是查找对象本身,然后再查找所在的类,没有再查找父类,再没有一直往上找,直到

object。

绑定方法

1.绑定到对象的方法:没有被任何装饰器装饰的方法。

  在类中定义的函数默认都是绑定到对象的方法。

  特点:参数的第一个必须是self表示当前对象本身,使用对象来调用,调用时会自动传入对象

2.绑定到类的方法:用classmethod装饰器装饰的方法。

  特点:参数的第一个必须是cls表示当前类本身,使用类名来调用,调用时会自动传入类。

 

非绑定方法:

用staticmethod装饰器装饰的方法

特点:不与类或对象绑定,类和对象都可以调用,但是没有自动传值那么一说。就是一个普通函数。

继承:就是一种关系,通过继承关系,一个对象可以直接使用另一个对象拥有的内容。也就是子类与父类的关系。

好处:减少代码重复。

使用:在类名后面的括号呢指定要继承的父类的名称,class 类名(父类名)

派生:就是子类中有父类没有的内容

覆盖:就是子类中有与父类相同的属性名称,可以将父类的内容覆盖重新定义

经典类与新式类

新式类就是继承object的,只在py3中,所以py3中出现的都是新式类

经典类就是没有继承object的,只在py2中出现。

所以要想写的代码兼容新式类和经典类,只需要在类名后面加括号,括号里面是object

菱形继承:就是一个有多个父类,多个父类有个共同父类。在新式类中先深度再广度,最后找公有父类,根据mro列表来找。经典类是深度,一条路走完再换。

 

组合就是一个类中以另一个类的对象作为数据属性,称为类的组合。

鸭子类型:就是只长得像,叫声像,走路像,那就是鸭子。

抽象类:就是没有实现题的函数。用abc模块配合接口使用。

 

posted @ 2019-05-20 18:59  帅气逼人23  阅读(107)  评论(0编辑  收藏  举报