案例驱动式Python学习笔记【第六篇】电子宠物
驱动案例
设计多只电子宠物,它们具有名字,性别,能力,体重等属性,可以完成吃饭、运动、显示状态的动作。
类与对象
通过类(模板)可以生产多个具有相同属性和方法(行为)的对象,对象是类的实例化
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学习笔记【第六篇】电子宠物相关推荐
- 案例驱动式Python学习笔记【第一篇】便捷水果店
前言 后续的此系列博文用于记录案例式Python学习笔记记录,供本人和感兴趣的小伙伴一起学习!!人生苦短,我学Python! 驱动案例 便捷水果店:请为水果店开发一个收银的小程序,已知水果单价和购买重 ...
- 案例驱动式Python学习笔记【第三篇】居民身份证信息提取
驱动案例 居民身份证是每位居民的唯一身份标识,18位的居民身份证号的信息包含省.市.出生日期和性别等信息, 那么本节将介绍如何按需提取相应的信息.居民身份证是每位居民的唯一身份标识,18位的居民身份证 ...
- python通讯录运用的知识点_案例驱动式Python学习--通讯录存取
驱动案例 通讯录:要求打印出企业全部十名员工通讯录.(要求有文件相关操作) 内置函数 自定义函数 函数指被封装起来的.实现某种功能的一段代码.Python安装包.标准库中自带的函数统称为内置函数,用户 ...
- python学习笔记(六)字典
python学习笔记(六)字典 1.字典初见 python中的字典实际上就是一系列的"键-值"对(key-value),它们之间时无序的,每一个键都必须有与之对应的值,这个值可以是 ...
- Python 学习笔记 第三篇 Python实现网易云评论网页爬虫+词云展示 (Pycharm+Mysql)
初始条件,具体可见我的其他文章. 1.安装Python.Python 学习笔记 第一篇 Python的安装与配置 2.安装Pycharm,并导入第三方包.Python 学习笔记 第二篇 Python ...
- python学习笔记(六)循环、迭代
跟一些比较牛 X 的程序员交流,经常听到他们嘴里冒出一个不标准的英文单词,而 loop.iterate.traversal 和 recursion 如果不在其内,总觉得他还不够牛 X.当让,真正牛 X ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python学习笔记(六)——类的初始化(__init__)、类属性和类方法 和 对象
学习本篇文章后会了解到:类的创建,为对象添加属性,对象的初始化,自定义对象的输出,类属性和类方法的创建. 1. 类的定义与格式 类是对一群具有相同特征或者行为的事物的一个统称. 类是一个模块,是负责创 ...
- python学习笔记(六)——函数的作用域和装饰器
目录 函数作用域 global和nonlocal关键字 递归 闭包 装饰器 函数作用域 global和nonlocal关键字 思考: def func():name = 'laowang' print ...
最新文章
- Mandriva学习笔记之八:安装Redis2.2.14
- java中exec命令,使用Java中的Runtime.exec()執行Windows命令
- linux安装zlib_Linux zlib和libpng安装(LAMP环境搭建)
- Centos7 上安装mysql遇上的问题:mysql无法正常启动
- iOS中监测来电方案
- mongoose如何发送html页面,Mongoose/Express/Nodejs尝试从服务器到html传递变量
- 电磁波传播相位是否会变化_电磁波相位关系释疑
- 用gulp计算合金弹性常数_考研结构力学 用3种方法解东南大学位移法大题
- 1004 成绩排名 (20 分)—PAT (Basic Level) Practice (中文)
- 重启 Mac 后停止更改壁纸的 4 种方法
- html下拉菜单右侧显示,css如何设置下拉菜单?
- 02 编程猫之小猫酷跑我设计
- 基于JAVA的葫芦娃救爷爷游戏
- 「硅仙人」吉姆 · 凯勒
- 台式计算机对比评测报告,高效稳定的办公之选-宏碁商祺X4270评测报告
- linux 命令:grep、egrep、ngrep、kill、pkill、killall
- 更改xshell远程服务器的终端字体颜色并突出显示用户名
- 文档点击链接无法自动跳转浏览器+google浏览器重启无法继续浏览上次打开的网页
- Unity JobSystem ECS 快速入门
- Android--简单电子木鱼开发详解