前言:
眼前你们对“python面向对象教程”大体比较珍视,朋友们都需要剖析一些“python面向对象教程”的相关内容。那么小编同时在网上汇集了一些对于“python面向对象教程””的相关资讯,希望兄弟们能喜欢,咱们快快来学习一下吧!【Python小短课 25】四探面向对象
一转眼已经四探面向对象。这回,我们继续讲解“继承”这个概念。
代码:
#!/usr/bin/python# -*- coding: UTF-8 -*-class Dog(object): def __init__(self, name, color): self.name = name self.color = color def sit(self): print(self.name+"坐下了") def smile(self): print(self.name+"笑了") #SuperDog继承于Dogclass SuperDog(Dog): def __init__(self, name, color, hairstyle): #先初始化基类Dog的部分 super(SuperDog, self).__init__(name, color) #再初始化自己的部分 self.hairstyle = hairstyle def shoot(self): print(self.name+"射击了")oMyDog = Dog("托比", "白色")oMyDog.sit()oMyDog.smile()oHerDog = Dog("莱斯", "黑色")oHerDog.sit()oHerDog.smile()oYourDog = SuperDog("杰克", "红色", "凌乱")oYourDog.sit()oYourDog.smile()oYourDog.shoot()
这是上回我们完成的代码,SuperDog类继承自Dog类,不仅拥有Dog共有的name(名字)、color(颜色)属性,也拥有SuperDog特有的hairstyle(发型)属性;不仅拥有Dog共有的sit(坐下)、smile(笑)方法,也拥有SuperDog特有的shoot(射击)方法。
看到这么一行代码:
class Dog(object):
Dog类继承于object。object是什么?你可以理解为这是Python世界里最基础的类,实现了一些基础属性和方法,其实这东西更多是一种历史遗留问题。
再看:
class SuperDog(Dog):
这里实现了SuperDog类对Dog类的继承,我们可称Dog为SuperDog的父类,也可称SuperDog为Dog的子类。假设我们把类理解为模板,继承就是一种实现模板不断提升、扩展的技术。
就像人类的DNA,不断继承改良。那继承就只是照单全收父类的属性或者方法吗?
不是的,就譬如基因突变,我们完全可以改写。
代码:
#SuperDog继承于Dogclass SuperDog(Dog): def __init__(self, name, color, hairstyle): #先初始化基类Dog的部分 super(SuperDog, self).__init__(name, color) #再初始化自己的部分 self.hairstyle = hairstyle def smile(self): print(self.name+"是超级狗,不苟言笑") def shoot(self): print(self.name+"射击了")
譬如以上代码,我们就对SuperDog类的smile方法进行了定义,这就“改写”了Dog类的smile方法,超级狗可是不苟言笑的呢。这样在执行oYourDog.smile的时候,调用的就是SuperDog改写后的smile方法。
那假设我们不是要“基因突变”,而是“基因改良”呢?就譬如SuperDog是可以笑的,但是笑了之后总会标志性地露出牙齿。
代码:
#SuperDog继承于Dogclass SuperDog(Dog): def __init__(self, name, color, hairstyle): #先初始化基类Dog的部分 super(SuperDog, self).__init__(name, color) #再初始化自己的部分 self.hairstyle = hairstyle def smile(self): super(SuperDog, self).smile() print(self.name+"露出一口洁白的牙齿") def shoot(self): print(self.name+"射击了")
super(SuperDog, self).smile()调用了Dog类的smile方法,而print(self.name+"露出一口洁白的牙齿")则实现了SuperDog类自己改良的部分。
这两节课对“继承”的核心概念做了介绍,后续我们继续探究使用面向对象的其他方面。
标签: #python面向对象教程