首页 > 分享 > 案例驱动式Python学习笔记【第六篇】电子宠物

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

驱动案例

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

类与对象

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

class Pet: def __init__(self,name,gender,energy,weight): //构造方法 def eat(self,food): //吃饭方法 def display(self): //显示当前状态方法 def run(self,time): //跑步方法 12345678910

class Pet: def __init__(self,name,gender,energy,weight): self.name=name self.gender=gender self.energy=energy self.weight=weight print('你好!我的名字是{0},我是{1},很高兴成为你的小伙伴'.format(self.name,self.gender)) def eat(self,food): if(food=='hanberger'): self.energy=self.energy+10 self.weight=self.weight+5 print("汉堡包真好吃,但是别给我吃太多!") else: self.weight=self.weight+2 print("好美味呀!我又充满能量了") 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-20 self.weight=self.weight-10 print("我运动了{0}分钟".format(time)) elif time>3: self.energy=self.energy-10 self.weight=self.weight-5 print("我运动了{0}分钟".format(time)) else: self.energy=self.energy-5 self.weight=self.weight-2 print("我运动了{0}分钟".format(time))

1234567891011121314151617181920212223242526272829303132333435363738

继承(Inheritance)

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

在这里插入图片描述

定义子类

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

执行继承父类的方法

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

补充知识

面向对象编程

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

对象

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

类(class)

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

抽象(abstract)

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

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

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

继承(inheritance)

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

多态( polymorphism)

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

类的定义

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

class 类名: 属性名 = 属性值 def 方法名(self): 方法体 1234 对象的创建

创建对象的格式如下: 对象名 = 类名() 123 访问对象成员

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

对象名.属性 对象名.方法() 12 单继承

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() #猫会爬树 123456789101112 super()函数

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

super().方法名()

多态

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

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

案例源码

class Pet: def __init__(self,name,gender,energy,weight): self.name=name self.gender=gender self.energy=energy self.weight=weight print('你好!我的名字是{0},我是{1},很高兴成为你的小伙伴'.format(self.name,self.gender)) def eat(self,food): if(food=='hanberger'): self.energy=self.energy+10 self.weight=self.weight+5 print("汉堡包真好吃,但是别给我吃太多!") else: self.energy=self.energy+5 self.weight=self.weight+2 print("好美味呀!我又充满能量了") 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-20 self.weight=self.weight-10 print("我运动了{0}分钟".format(time)) elif(time>3): self.energy=self.energy-10 self.weight=self.weight-5 print("我运动了{0}分钟".format(time)) else: self.energy=self.energy-5 self.weight=self.weight-2 print("我运动了{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()

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657

总结

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

相关知识

案例驱动式Python学习笔记【第六篇】电子宠物
电子宠物游戏java
【讨论】养猫学习笔记(03)——钙磷比、磷以及长期过量或缺乏对肾脏的影响
大猫伸展式体式精讲|瑜伽教培学员收藏
【讨论】养猫学习笔记(02)——营养需求标准,什么是NRC、AAFCO
基于Python的猫狗宠物展示系统
参与式教学
AI猫猫火遍全网,“电子猫”快要比真猫还好吸了
计算机毕业设计基于Python的猫狗宠物展示系统
宠物电子耳标厂家

网址: 案例驱动式Python学习笔记【第六篇】电子宠物 https://m.mcbbbk.com/newsview104200.html

所属分类:萌宠日常
上一篇: 宠物托管盈利模式有哪些
下一篇: 智能宠物护理行业发展趋势及前景展