驱动案例

设计多只电子宠物,它们具有名字,性别,能力,体重等属性,可以完成吃饭、运动、显示状态的动作。

类与对象

通过类(模板)可以生产多个具有相同属性和方法(行为)的对象,对象是类的实例化

class Pet:def __init__(self,name,gender,energy,weight)://构造方法def eat(self,food)://吃饭方法def display(self)://显示当前状态方法def run(self,time)://跑步方法
class Pet:def __init__(self,name,gender,energy,weight):self.name=nameself.gender=genderself.energy=energyself.weight=weightprint('你好!我的名字是{0},我是{1},很高兴成为你的小伙伴'.format(self.name,self.gender))def  eat(self,food):if(food=='hanberger'):self.energy=self.energy+10self.weight=self.weight+5print("汉堡包真好吃,但是别给我吃太多!")else:self.weight=self.weight+2print("好美味呀!我又充满能量了")def display(self):print("我当前的能量值为{0}".format(self.energy))print("我当前的体重为{0}".format(self.weight))if  self.energy<70:print("我累了,快为我补充能量吧!")elif  self.weight>60:print("我有点超重了,让我做做运动吧!")else:print("我很健康,谢谢主人!")def run(self,time):if time>5:self.energy=self.energy-20self.weight=self.weight-10print("我运动了{0}分钟".format(time))elif time>3:self.energy=self.energy-10self.weight=self.weight-5print("我运动了{0}分钟".format(time))else:self.energy=self.energy-5self.weight=self.weight-2print("我运动了{0}分钟".format(time))

继承(Inheritance)

  • 继承是面向对象方法学中的核心概念,它是指一个类的定义中可以派生出另一个类的定义,派生出的类(子类)可以自动拥有父类的全部属性和服务。
  • 继承简化了人们对现实世界的认识和描述,在定义子类时不必重复定义已在父类中定义的属性和服务,只要说明它是某个父类的子类,并定义自己特有的属性和服务即可。

定义子类

class NewPet(Pet):def calculate(self):a=eval(input("请给我出题:"))print("={0}".format(a))p2=NewPet('瓦力','男孩',100,50)
p2.calculate()

执行继承父类的方法

p2.eat('hanberger')
p2.display()
p2.run(15)
p2.display()

补充知识

面向对象编程

面向对象是程序开发领域中的重要思想,这种思想模拟了人类认识客观世界的逻辑,是当前计算机软件工程学的主流方法。
类是面向对象的实现手段。
面向过程编程的基本思想是:分析解决问题的步骤,使用函数实现步骤相应的功能,按照步骤的先后顺序依次调用函数。
面向对象编程的基本思想是:首先会从问题之中提炼出问题涉及的角色,将不同角色各自的特征和关系进行封装,以角色为主体,通过描述角色的行为去描述解决问题的过程。

对象

对象是现实世界中可描述的事物,它可以是有形的也可以是无形的,从一本书到一家图书馆,从单个整数到繁杂的序列等都可以称为对象。
对象是构成世界的一个独立单位,它由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一个独立整体。

类(class)

从具体的事物中把共同的特征抽取出来,形成一般的概念称为“归类”,忽略事物的非本质特牲,关注与目标有关的本质特征,找出事物间的共性,抽象出一个概念模型,就是定义一个类。
例如:猫和狗都属于动物类
在面向对象的方法中,类是具有相同属性和行为的一组对象的集合,它提供一个抽象的描述,其内部包括属性和方法两个主要部分,它就像一个模具,可以用它铸造一个个具体的铸件。

抽象(abstract)

抽象是抽取特定实例的共同特征,形成概念的过程。

例如苹果、香蕉、梨、葡萄等,抽取出它们共同特性就得出“水果”这一类,那么得出水果概念的过程,就是一个抽象的过程。

封装(encapsulation)

封装是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

继承(inheritance)

继承描述的是类与类之间的关系,通过继承,新生类可以在无需赘写原有类的情况下,对原有类的功能进行扩展。

多态( polymorphism)

多态指同一个属性或行为在父类及其各派生类中具有不同的语义。
封装、继承、多态是面向对象程序设计的三大特征,它们的简单关系如下图所示。

类的定义

类中可以定义数据成员和成员函数,数据成员用于描述对象特征,成员函数用于描述对象行为,其中数据成员也被称为属性,成员函数也被称为方法。

class 类名:属性名 = 属性值def 方法名(self):方法体

对象的创建

创建对象的格式如下:
对象名 = 类名()   

访问对象成员

若想在程序中真正地使用对象,需掌握访问对象成员的方式。对象成员分为属性和方法,它们的访问格式分别如下:

对象名.属性
对象名.方法()

单继承

Python中类与类之间具有继承关系,其中被继承的类称为父类或基类,继承的类称为子类或派生类。单继承指的是子类只继承一个父类,其语法格式如下:class 子类(父类)

多继承

多继承指的是一个子类继承多个父类,其语法格式如下:
class 子类(父类A, 父类B, …):

方法的重写

子类可以继承父类的属性和方法,若父类的方法不能满足子类的要求,子类可以重写父类的方法,以实现理想的功能。

父类定义如下:
class Felines:def speciality(self):print("猫科动物特长是爬树")
子类定义如下:
class Cat(Felines):name = "猫"def speciality(self):print(f'{self.name}会抓老鼠')print(f'{self.name}会爬树')
cat = Cat() #猫会抓老鼠
cat.speciality() #猫会爬树

super()函数

如果子类重写了父类的方法,但仍希望调用父类中的方法,那么可以使用super()函数实现。

super().方法名()

多态

Python中并不需要显式指定对象的类型,只要对象具有预期的方法和表达式操作符,就可以使用对象。

rabbit = Rabbit()
test(rabbit)    # 接收Rabbit类的对象
snail =  Snail()
test(snail)      # 接收Snail类的对象

案例源码

class Pet:def __init__(self,name,gender,energy,weight):self.name=nameself.gender=genderself.energy=energyself.weight=weightprint('你好!我的名字是{0},我是{1},很高兴成为你的小伙伴'.format(self.name,self.gender))def eat(self,food):if(food=='hanberger'):self.energy=self.energy+10self.weight=self.weight+5print("汉堡包真好吃,但是别给我吃太多!")else:self.energy=self.energy+5self.weight=self.weight+2print("好美味呀!我又充满能量了")def display(self):print("我当前的能量值为{0}".format(self.energy))print("我当前的体重为{0}".format(self.weight))if(self.energy<70):print("我累了,快为我补充能量吧!")elif(self.weight>60):print("我有点超重了,让我做做运动吧!")else:print("我很健康,谢谢主人!")def run(self,time):if(time>5):self.energy=self.energy-20self.weight=self.weight-10print("我运动了{0}分钟".format(time))elif(time>3):self.energy=self.energy-10self.weight=self.weight-5print("我运动了{0}分钟".format(time))else:self.energy=self.energy-5self.weight=self.weight-2print("我运动了{0}分钟".format(time))class NewPet(Pet):def calculate(self):a=eval(input("请给我出题:"))print("={0}".format(a))p2=NewPet('瓦力','男孩',100,50)
p2.calculate()
p2.eat('hanberger')
p2.display()
p2.run(15)
p2.display()

总结

本章主要补充介绍了面向对象概述、类和对象的关系、类的定义与访问、对象的创建与使用、类成员的访问限制、构造方法与析构方法、类方法和静态方法、继承、多态等知识。

案例驱动式Python学习笔记【第六篇】电子宠物相关推荐

  1. 案例驱动式Python学习笔记【第一篇】便捷水果店

    前言 后续的此系列博文用于记录案例式Python学习笔记记录,供本人和感兴趣的小伙伴一起学习!!人生苦短,我学Python! 驱动案例 便捷水果店:请为水果店开发一个收银的小程序,已知水果单价和购买重 ...

  2. 案例驱动式Python学习笔记【第三篇】居民身份证信息提取

    驱动案例 居民身份证是每位居民的唯一身份标识,18位的居民身份证号的信息包含省.市.出生日期和性别等信息, 那么本节将介绍如何按需提取相应的信息.居民身份证是每位居民的唯一身份标识,18位的居民身份证 ...

  3. python通讯录运用的知识点_案例驱动式Python学习--通讯录存取

    驱动案例 通讯录:要求打印出企业全部十名员工通讯录.(要求有文件相关操作) 内置函数 自定义函数 函数指被封装起来的.实现某种功能的一段代码.Python安装包.标准库中自带的函数统称为内置函数,用户 ...

  4. python学习笔记(六)字典

    python学习笔记(六)字典 1.字典初见 python中的字典实际上就是一系列的"键-值"对(key-value),它们之间时无序的,每一个键都必须有与之对应的值,这个值可以是 ...

  5. Python 学习笔记 第三篇 Python实现网易云评论网页爬虫+词云展示 (Pycharm+Mysql)

    初始条件,具体可见我的其他文章. 1.安装Python.Python 学习笔记 第一篇 Python的安装与配置 2.安装Pycharm,并导入第三方包.Python 学习笔记 第二篇 Python ...

  6. python学习笔记(六)循环、迭代

    跟一些比较牛 X 的程序员交流,经常听到他们嘴里冒出一个不标准的英文单词,而 loop.iterate.traversal 和 recursion 如果不在其内,总觉得他还不够牛 X.当让,真正牛 X ...

  7. python学习笔记(十六)-Python多线程多进程

    一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...

  8. python学习笔记(六)——类的初始化(__init__)、类属性和类方法 和 对象

    学习本篇文章后会了解到:类的创建,为对象添加属性,对象的初始化,自定义对象的输出,类属性和类方法的创建. 1. 类的定义与格式 类是对一群具有相同特征或者行为的事物的一个统称. 类是一个模块,是负责创 ...

  9. python学习笔记(六)——函数的作用域和装饰器

    目录 函数作用域 global和nonlocal关键字 递归 闭包 装饰器 函数作用域 global和nonlocal关键字 思考: def func():name = 'laowang' print ...

最新文章

  1. Mandriva学习笔记之八:安装Redis2.2.14
  2. java中exec命令,使用Java中的Runtime.exec()執行Windows命令
  3. linux安装zlib_Linux zlib和libpng安装(LAMP环境搭建)
  4. Centos7 上安装mysql遇上的问题:mysql无法正常启动
  5. iOS中监测来电方案
  6. mongoose如何发送html页面,Mongoose/Express/Nodejs尝试从服务器到html传递变量
  7. 电磁波传播相位是否会变化_电磁波相位关系释疑
  8. 用gulp计算合金弹性常数_考研结构力学 用3种方法解东南大学位移法大题
  9. 1004 成绩排名 (20 分)—PAT (Basic Level) Practice (中文)
  10. 重启 Mac 后停止更改壁纸的 4 种方法
  11. html下拉菜单右侧显示,css如何设置下拉菜单?
  12. 02 编程猫之小猫酷跑我设计
  13. 基于JAVA的葫芦娃救爷爷游戏
  14. 「硅仙人」吉姆 · 凯勒
  15. 台式计算机对比评测报告,高效稳定的办公之选-宏碁商祺X4270评测报告
  16. linux 命令:grep、egrep、ngrep、kill、pkill、killall
  17. 更改xshell远程服务器的终端字体颜色并突出显示用户名
  18. 文档点击链接无法自动跳转浏览器+google浏览器重启无法继续浏览上次打开的网页
  19. Unity JobSystem ECS 快速入门
  20. Android--简单电子木鱼开发详解

热门文章

  1. 哀悼日---将网站变为黑白色的方法
  2. Linux火墙策略的管理以及火墙的介绍
  3. 彩超计算机录入员招聘,招聘超声科录入员,北京朝阳急诊抢救中心
  4. tomcat压缩配置
  5. 【锐捷无线】AC集群配置
  6. 单片机c语言如何表示二进制,单片机C语言中将二进制数转化为十进制的办法
  7. Java版本和JDK版本的关系
  8. 计算机网络的ios模型,IOS/OSI网络参考模型
  9. 【转】解决win7资源管理器已停止工作问题
  10. Rsync用于数据备份