龙空技术网

无门槛快速学编程——Python小短课,四探面向对象

老爸编程 240

前言:

眼前你们对“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面向对象教程