前面我们了解到类可以对某种一实体进行抽象,然而在现实中有许多实体之间是有层次联系的,例如可以想到 水果->苹果->青苹果 这样的递进层次关系。在编程时,假如对每一种实物都从头到尾创建一个类是非常折磨的事情,为什么不也采用层次递进的方法来描述实物呢?
答案是可以的,这就是类的另一大特性:继承。
继承顾名思义就是继承前一个类的特性,再补充自己的特性。因为类本身就是抽象的,所以我们要先仔细分析一个实物到底具有哪些基本属性、哪些共同属性、哪些高级属性。以“青苹果”类为例,我们想到除了青苹果还有红苹果、奶油苹果等,于是我们可以把它们的共同点抽象出来放到一个“苹果”类中,并使“青苹果”继承“苹果”;从“苹果”出发,我们想到还有橘子、葡萄这样的水果,于是我们再将它们共同的性质抽象出来放到“水果”类中。
总体而言,越是高级的类越具体、拥有更多细节属性;越是基础的类越抽象、包含更多可塑造性。
我们再来关注另一种特性:假设我们只是想知道“橘子”的产地是哪里,按照类的封装特性我们应该买一袋回来看看他的标签,这很麻烦不是吗?还有一种方法是直接给工厂发信息询问,这样的方法在类里对应着“静态类函数”。
静态类函数使用 @staticmothod 装饰,你可以把它看成戴在类函数上面的警示帽,除此之外静态类函数不带有 self 参数,因为它存放在类(class)中而不会被打包到对象(object)中。利用静态类函数我们可以进行一些与具体哪个对象无关但是与类本身有关的操作。
最后提醒一下,静态类函数使用时应该对类直接调用;普通类函数需要先从类创造一个实体对象,再对实体对象调用。
如果你也想学习python,这些Python资料、数据分析、Python从入门到实践第三版pdf书籍、Python+Pycharm安装包&永久激活插件、直播课程,可以在这里免费领取哈👇教女朋友学Python第一天:类与对象(上)