深入探究Python类系列之二:类的重要概念

一、类的继承和重写

1.类的继承

     1.1默认继承Object类

        类可以实现复杂的功能,而复杂的功能往往意味着比较复杂的代码结构。如果每次定义一个类时都需要从头构建,则会花费大量的且无意义的时间和精力。因此,Python中允许一个类继承另一个类的所有方法和属性(这里暂且这样说,关于类属性、实例属性、私有属性和半私有属性的概念后面再详细进行说明),而构建类所不可缺少的方法,全部被定义在基类(或元类)Object中。在Python3中,自定义的类会默认继承Object类,因此作为开发人员只需要在Object类的基础上添加自己想要实现的功能即可,而不用去管类的底层代码是如何实现的,大大缩短了开发时间,精简代码。 下图所示为自定义的TempClass继承了Object类,并实现了print_out()方法。

     1.2自定义继承类

        有时候我们并不想继承Object类,而是想继承自定义的类。比如前面说的,我们自定义了一个手机类Phone,但是这个手机类实现的功能过于简单,我们想让这个手机实现更加复杂的功能。于是,我们可以构建一个新的手机类NewPhone,这个新类会继承原手机类Phone并添加自己新的功能。如下:

2.类的重写

        所谓的重写,是指从父类继承的方法不能满足子类的需求,需要对其进行改写。也就是将父类中的同名方法进行重写。重写的实现手段有两种:一种是完全重写,即从头实现一个与父类中同名的方法;另一种是继承重写,即在从父类中继承该方法的前提下进行修改。还是以手机类作为例子进行说明:

二、类对象和类的实例对象

        从前面的代码中不难发现其中self出现频率很高,那么它到底是什么作用呢?其实,self指的是类的实例对象本身,那么什么是实例对象呢?它和类对象有什么区别和联系呢?

        为了方便理解,以玩具成产为例:加工厂生产玩具,那么首先得生产模具,然后通过模具复制出很多粗胚,对粗胚进行上色等加工处理得到最后的成品玩具。这里的模具就相当于Python中的类对象,而通过模具生产出的成品玩具就相当于Python中的实例对象,而这个复制、上色加工的过程,就相当于Python中类的实例化过程,也即上面的my_phone = NewPhone('blue', 'Huawei', '2300¥')语句。在这里,NewPhone是类对象,而my_phone就是NewPhone类的实例对象。

        对于类对象而言,self是未激活的,也即所有含有self的语句或以self作为参数的方法均是无效的;而self是实例对象本身,因此,在实例对象中self被激活,self中就包含了该实例对象区别于其他实例对象的所有信息。就如在玩具生产过程中的不同处理会得到不同的玩具一样,同一个类的不同实例之间具有差异性,这一差异性,体现在self中所包含信息的不同。需要指出的是self 这个词不是指定的关键字,换成符合Python变量命名的任意名称均可,但一般默认使用self。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容