前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

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

qiguaw 2024-09-18 23:18:30 资源文章 19 ℃ 0 评论

【Python小短课 24】三探面向对象

来说下面向对象其中“继承”的概念。

如之前所说,类可以理解为一种模板,那么继承可以理解为一种提升、扩展模板能力的技术。

代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
?
class Dog:
 def __init__(self, name, color):
 self.name = name
 self.color = color
 
 def sit(self):
 print(self.name+"坐下了")
 
 def smile(self):
 print(self.name+"笑了")
 
?
oMyDog = Dog("托比", "白色")
oMyDog.sit()
oMyDog.smile()
?
oHerDog = Dog("莱斯", "黑色")
oHerDog.sit()
oHerDog.smile()

如代码所示,Dog类作为生产狗的模板,规定了通用的属性name(名字)color(颜色),规定了通用的方法sit(坐下)smile(笑)。

我们拿着这个Dog类生产了千千万万的狗,突然有一天总结发现,狗也是可以分类的,不同类别的狗拥有共性,也有自己的特性。譬如我们发现有一类SuperDog(超级狗)不仅有name(名字)color(颜色),也有hairstyle(发型)属性;不仅有sit(坐下)smile(笑)方法,也有shoot(射击)方法。

所以,我们基于Dog类,定义了我们的SuperDog类:

#!/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继承于Dog
class 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类,然后我们拿SuperDog类这个超级狗的模板生产了oYourDog这个对象,这个对象除了拥有常规狗的属性和方法,也拥有自己的属性hairstyle(凌乱的发型),也拥有shoot(射击)的能力。

各位小萌新可能会不理解部分代码细节。没关系,各位先对“继承”这个类的概念有个直观感受,后续我们继续讲解。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表