您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 抚顺分类信息网,免费分类信息发布

面向对象特性之二:继承(Python进阶教程)

2024/2/10 17:03:39发布24次查看
上一篇文章介绍了面向对象特性之——封装(参考之前发文《面向对象特性之一:封装(python进阶教程)》),想必大家对面向对象的这种编程思想应该有了一定的了解。今天我们再来研究一下面向对象的第二种特性——继承;
“继承”从字面意思上很好理解,儿子和爸爸长的很像,性格也类似,一看就知道是亲生的。但是呢,又不完全一样,儿子拥有他自己的特征。在程序上面,“继承”这种思想也类似于平时我们所理解的概念。下面,让我们接着以“快递公司老板”这个例子来说明“继承”在python中的用法和优点;
你开的快递公司生意已经很好了,不得不再增加一个部门,这个部门是从属于之前的“员工”部门的一个子部门,专门负责给国外的客户收发快递,那么,这个子部门类可以继承之前的“员工”部门类,从而增加一个继承的子类,这个子类具有和其父类相同的属性、方法,也可根据逻辑单独在子类里定义其他方法,这样的类与类的关系就叫做继承关系,我们看一下代码:
父类“员工类”这是之前创建的一个员工类,已经很熟悉了,我们写一个最简单的继承类;
子类“员工-海外类”类的继承的写法
定义一个类,在这个类的类名后面将父类的类名用“()”括起来,就得到了一个子类,这样的写法也叫做单一继承(还有多重继承)。子类具有和父类一样的属性,一样的方法,譬如,实例化的时候传入姓名和年龄,将直接调用父类的构造函数(因为子类无构造函数)、实例化的子类直接调用父类的方法,也会输出相同的信息;
注意:
python总是首先查找本类的方法,如果找不到,才会到父类里去查找,如果找到了,就调用子类的方法,父类的方法将不被调用,比如,上例中,子类如果有自己的构造函数,在实例化的时候,将执行子类的构造函数,而不是执行父类的构造函数;子类只继承父类的公有属性和公有方法;还有一种叫法叫做“基类”和“派生类”,也是指的父类和子类的关系;
为什么要用类的继承
在写代码的时候,如果有若干个类具有共同的属性和方法,那么可以将相同的属性和方法提取出来,整理成一个父类,不同的属性和方法封装在自己的类中使用,则在调用的时候,共同的方法只需要调用父类的方法,就可以实现其目的,简化了代码段,增强了可阅读性,也提高了代码的扩展性;
但是,如果一味的定义父类,父类下面继承子类,子类下面再继承子类,这样就会造成继承的链条非常的长,当代码有一点改动,有可能就会造成弥漫性的改动,所以,尽量不要做过多的继承关系;
子类怎么调用父类的方法
如果子类要调用父类的构造函数方法,可以通过下面的方式实现:
子类调用父类的构造方法通过使用parentclass.__init__(self,参数1,参数2........)或者super(childclass, self).__init__(参数1,参数2........)都可以调用父类的构造函数方法,
注意:
子类调用父类构造方法时,参数必须一一对应上,否则会报错;第二种方法不支持多重继承,所以尽量使用第一种;
如果子类要调用父类的普通方法,我们看一下下面这个例子:
子类调用父类的普通方法通过parentclass.方法(self)或者self.方法()都可以在子类中使用父类的方法,
请注意self的位置!
多重继承
一个子类继承多个父类,这样的继承就叫做多重继承,它的写法是:class 子类(父类1,父类3,父类3...):在多重继承下,子类将继承所有父类的公有变量和公有方法,即在外面访问时,可以直接访问所有父类的公有变量和公有方法,我们用一个简单的例子来说明:
多重继承注意:
如果不明确指出,子类将调用第一个父类的构造方法,不会再调用其他父类的构造方法,一般的方法也遵循这种原则(如果方法名称都一样的话);
小结
继承这种思想在面向对象的编程中好处多多,简化代码结构,使扩展性变强,但是,初学者要尽量避免复杂的继承关系,避免把自己绕进去。今天就到这里了,谢谢大家!
抚顺分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录