Python入门-面向对象三大特性-继承
2024-09-08 07:18:12
面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。
例如:
猫可以:喵喵叫、吃、喝、拉、撒
狗可以:汪汪叫、吃、喝、拉、撒
如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能,如下所示:
伪代码 class 猫: def 喵喵叫(self):
print '喵喵叫' def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something class 狗: def 汪汪叫(self):
print '喵喵叫' def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something
述代码不难看出,吃、喝、拉、撒是猫和狗都具有的功能,而我们却分别的猫和狗的类中编写了两次。如果使用 继承 的思想,如下实现:
动物:吃、喝、拉、撒
猫:喵喵叫(猫继承动物的功能)
狗:汪汪叫(狗继承动物的功能)
伪代码 class 动物: def 吃(self):
# do something def 喝(self):
# do something def 拉(self):
# do something def 撒(self):
# do something # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
class 猫(动物): def 喵喵叫(self):
print '喵喵叫' # 在类后面括号中写入另外一个类名,表示当前类继承另外一个类
class 狗(动物): def 汪汪叫(self):
print '喵喵叫'
代码实例 class Animal: def eat(self):
print "%s 吃 " %self.name def drink(self):
print "%s 喝 " %self.name def shit(self):
print "%s 拉 " %self.name def pee(self):
print "%s 撒 " %self.name class Cat(Animal): def __init__(self, name):
self.name = name
self.breed = '猫' def cry(self):
print '喵喵叫' class Dog(Animal): def __init__(self, name):
self.name = name
self.breed = '狗' def cry(self):
print '汪汪叫' # ######### 执行 ######### c1 = Cat('小白家的小黑猫')
c1.eat() c2 = Cat('小黑的小白猫')
c2.drink() d1 = Dog('胖子家的小瘦狗')
d1.eat()
学习了继承的写法之后,我们用代码来是上述阿猫阿狗的功能:
代码实例
class
Animal:
def
eat(
self
):
print
"%s 吃 "
%
self
.name
def
drink(
self
):
print
"%s 喝 "
%
self
.name
def
shit(
self
):
print
"%s 拉 "
%
self
.name
def
pee(
self
):
print
"%s 撒 "
%
self
.name
class
Cat(Animal):
def
__init__(
self
, name):
self
.name
=
name
self
.breed =
'猫'
def
cry(
self
):
print
'喵喵叫'
class
Dog(Animal):
def
__init__(
self
, name):
self
.name
=
name
self
.breed =
'狗'
def
cry(
self
):
print
'汪汪叫'
# ######### 执行 #########
c1
=
Cat(
'小白家的小黑猫'
)
c1.eat()
c2
=
Cat(
'小黑的小白猫'
)
c2.drink()
d1
=
Dog(
'胖子家的小瘦狗'
)
d1.eat()
https://www.cnblogs.com/zunchang/p/7965685.html
最新文章
- iOS开发---有用的网址(持续更新)
- wechat开发
- Ad-Hoc命令不熟悉的选项
- yii 隐藏index.php的步骤
- wpa_supplicant是什么?
- Linux的启动流程
- 前端:JS获取单击按钮单元格所在行的信息
- ASP.NET Core 一步步搭建个人网站(3)_菜单管理
- Android图表库MPAndroidChart(十四)——在ListView种使用相同的图表
- 使用Server Trigger保护重要的数据库对象
- 更新本地git仓库的远程地址(remote地址)
- (大数 求余) Large Division Light OJ 1214
- MySQL 获得当前日期时间 函数【转】
- 词云-wordcloud
- iOS 给UIView添加xib
- Xilinx Vivado的使用详细介绍(2):综合、实现、管脚分配、时钟设置、烧写
- [翻译] iOSSharedViewTransition
- [翻译] VENCalculatorInputView
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
- Win10安装Ubuntu16.04 双系统
热门文章
- ENVI提取水系并进行生态敏感性分析
- 用python生成你想要的任意大小文件
- 记一次解决关机蓝屏 | MULTIPLE_IRP_COMPLETE_REQUESTS | klflt.sys
- VuePress 博客之 SEO 优化(六)站长工具
- linux如何通过文件2,3找回文件1?
- oracle 11g生成ASH报告操作过程
- JS 邮箱的验证(正则)
- 网关中间件-Nginx(二)
- 深度学习工具LabelXml安装教程
- python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)