面向对象编程,简单来说就是基于对类和对象的使用。本文来为大家介绍面向对象的三大特性——封装、继承、多态。
封装
第一节:封装的简介
上一节我们讲过:直接通过 对象.属性
的方式来修改属性的值会导致对象中的属性可以随意修改,这是非常的不安全的:因为值可以任意修改,不论对错。
这里我们将介绍一种方法来更好的保护数据,保证数据的安全性:封装。
封装是面向对象的三大特性之一。
封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法>>点击链接查看更多关于封装的内容
第二节:隐藏类中的属性
本文介绍了隐藏类中的属性的2种方法,避免外部可以随意访问。
并通过实际的案例详述了私有属性的建设和调用的方法>>点击链接了解详情
第三节:property装饰器
property装饰器,用来将一个get方法,转换为对象的属性,添加为property装饰器以后,我们就可以像调用属性一样使用get方法。
但是由于我们只提供了get方法而没有set方法,所以不能修改值。此时需要提供set方法进行修改。
要求:使用property装饰的方法,必须和属性名是一样的。>>点击链接了解更多
继承
第一节:继承简介
如果有一个类,能够实现我们需要的大部分功能,但是不能实现全部功能,那么如何能让这个类来实现全部的功能呢?
① 直接修改这个类,在这个类中添加我们需要的功能,这种方式修改起来会比较麻烦,并且会违反OCP原则。(开闭原则),我们不推荐使用这种方式。
② 创建一个新的类这是比较麻烦的,并且需要大量的进行复制粘贴,会出现大量的重复性代码。这种方式也不太适合。
③ 直接从父类中来继承它的属性和方法
- 通过继承我们可以使一个类获取到其他类中的属性和方法
- 在定义类时,可以在类名后的括号中指定当前类的父类(超类、基类、super),子类(衍生类)可以直接继承父类中的所有的属性和方法
那该如何用代码实现继承呢?>>点击链接查看详情
第二节:方法的重写override
如果在子类中如果有和父类同名的方法,则通过子类实例去调用方法时,会调用子类的方法而不是父类的方法,这个特点我们成为叫做方法的重写(覆盖,override)。可以确保在继承父类方法之后,自身还可以做出简单的修改。
同时注意:当我们调用一个对象的方法时,会优先去当前对象中寻找是否具有该方法,如果有则直接调用。如果没有,则去当前对象的父类中寻找,如果父类中有则直接调用父类中的方法,如果没有,则去父类的父类中寻找,以此类推,直到找到object,如果依然没有找到,则报错。>>点击链接了解更多
第三节:Python内置函数之super()
super() 函数是用于调用父类(超类)的一个方法。
它是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
当程序中的方法被写死,只能调用父类中的属性时,如果子类的父类更换,那么需要更新的代码是非常多的,所以就需要一个动态获取父类的方法。
super() 可以用来获取当前类的父类,并且通过super()返回对象调用父类方法时,不需要传递self。>>点击链接查看更多
第四节:多重继承
多重继承,会使子类同时拥有多个父类,并且会获取到所有父类中的方法。
在Python中是支持多重继承的,也就是我们可以为一个类同时指定多个父类。这是与别的大部分语言不一致的。但在开发中没有特殊的情况,应该尽量避免使用多重继承,因为多重继承会让我们的代码过于复杂。
注意:如果多个父类中有同名的方法,则会现在第一个父类中寻找,然后找第二个,然后找第三个......前边父类的方法会覆盖后边父类的方法。>>点击链接了解更多
多态
第一节:多态简介
多态是面向对象的三大特征之一。
多态从字面上理解是多种形态。例如:狗有多个种类(狼狗、藏獒、哈士奇、古代牧羊犬...)。
一个对象可以以不同的形态去呈现。>>点击链接了解多态的实现方法
第二节:类的属性和方法
在之前的课程中我们讲过为什么实例可以访问到类中的属性和方法?那是因为类中定义的属性和方法都是公共的,任何该类实例都可以访问。
当我们调用一个对象的属性时,解析器会先在当前对象中寻找是否含有该属性,如果有,则直接返回当前的对象的属性值,如果没有,则去当前对象的类对象中去寻找,如果有则返回类对象的属性值,如果没有则报错!
在这里做一些深入的研究:静态方法不需要指定任何的默认参数,静态方法可以通过类和实例去调用 。
静态方法,基本上是一个和当前类无关的方法,它只是一个保存到当前类中的函数。静态方法一般都是一些工具方法,和当前类无关。>>点击链接了解更多
第三节:Python的垃圾回收机制
就像我们生活中会产生垃圾一样,程序在运行过程当中也会产生垃圾。
程序运行过程中产生的垃圾会影响到程序的运行的运行性能,所以这些垃圾必须被及时清理。
什么是垃圾?在程序中没有被引用的对象就是垃圾,这种垃圾对象过多以后会影响到程序的运行的性能。所以我们必须进行及时的垃圾回收,所谓的垃圾回收就是讲垃圾对象从内存中删除。
在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除,所以我们不用手动处理垃圾回收。
在Python中有一些特殊的方法可实现垃圾回收的功能,比如:init、del>>点击链接了解更多
第四节:Python中的魔术方法
特殊方法,也称为魔术方法。它们都是使用__开头和结尾的。例如: __init__
、__del__`。
特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行。
我们在需要的时候去调用就可以了。这些方法都是对多态的体现。>>点击链接了解更多内容
最后来简单的总结一下面向对象的三大特征:
封装:确保对象中的数据安全
继承:保证了对象的可扩展性
多态:保证了程序的灵活性
了解更多有关Python的内容,请订阅Python学习站官方技术圈!!