之前主要是在实现和操作类的细节,在初步了解了类以后,需要看一看面向对象相关的思想.

派生

所谓派生其实在之前的继承里已经学过,就是继承了父类的方法和属性之后,可以对其改写和扩充,在调用方法的时候会优先调用对象修改后的方法,而不是父类的方法.
子类继承父类,也叫做派生.

多态

对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类.多态表明了动态(又名:运行时)绑定的存在,允许重载及运行时类型确定和验证.

多态一定是运行时的绑定状态,而不是静态的继承.
多态一般要编写能够支持多种状态和逻辑的方法,然后根据方法来调用.
也可以弄一个基类,编写统一的方法,然后让子类调用,根据子类不同来得到不同的结果,注意一定是要在运行时即可.
多态实际上是继承的实现细节,由于单独写代码不运行,实际上是继承的静态,但是真正让不同的类和对象体现出多态,其实就是继承的表现形式.

如果说为每个类单独编写相同名字的方法,在运行的时候体现出来的效果和多态的结果相同,但是这种产生的过程并不是多态产生的过程,只是各个类单独编写的方法.提到多态就要知道,多态的基础是继承.
多态的实现方法主要是在调用方法的过程中编写合理的逻辑,使运行的效果不同.

封装

很多面向对象的语言具有一些特性,即对象外无法访问对象内的数据和方法等属性,仅能由对象自己操作.python中没有此类限制,对象的私有数据可以从外部访问(有一定防护机制).封装的本质是明确的区分内外.
封装相关的一系列知识:
1 可以写一个模块,用import 导入,这个时候是无法简单的调用其中的内容,必须阅读文档或者源代码
2 属性如果是单下划线开头,这是一种约定,只是告诉你这个变量是类内部使用.如果你读到这个变量就应该知道,这个变量不应该在外部使用.python本身并没有对这个做出限制.
3 属性如果是双下划线开头,是不能直接用对象名.__var来访问,python会自动将此种属性重命名为:_classname__var(注意没有.)可以查看属性字典来进行确认.知道了这点之后,这个变量实际上也可以被外部调用.

封装的几个层面:
第一层 类本身就是一种封装.
第二层 类中定义私有属性,只在类的内部使用(约定而已,没有真正限制访问),包括单下划线和双下划线开头的属性.
第三层 是真正意义上的封装,明确区分内外,内部的实现逻辑,外部无法知晓,并且为封装到内部的逻辑提供一个接口供外部使用.

对私有变量进行访问并且提供给外部使用的方法,叫做接口函数.