# _*_ coding:utf-8 _*_
# Author: 林楠
# edit time: 2022/4/21 19:54
# name: 面向对象.py
# Product: PyCharm
# 面向对象:完成工作的时候关注那些个体能够完成相应的工作,找到相应的个体即可完成相应任务
# 抽象:类 具体:对象
"""
类:一系列事物的统称,同类事物必定具有相同的特征
状态----变量(成员变量)
行为----方法(成员方法)
统称:类的成员
"""
# 类定义
# 类命名规范:大驼峰命名规则
"""定义格式一
class 类名:
____pass
定义格式二:
class 类名:
____成员
"""
# 演示类的定义与对象的创建
'''
class Cat:
pass
class MyName:
pass
'''
# 创建对象
"""
创建格式:变量名 = 类名()
"""
### 注意:创建对象不限制数量
# 类成员————成员变量
"""
定义格式一(常用):
class 类名:
____def __init_(self):
________self.变量名1 = 值1
________self.变量名2 = 值2
________self.变量名3 = 值3
调用格式:
取值:对象名.变量名
赋值:对象名.变量名 = 值
"""
'''
class Cat:
def __init__(self):
self.type = "波斯猫"
self.name = None
cat1 = Cat()
print(cat1.type)
cat1.name = "球球"
print(cat1.name)
# 给cat1穿衣服
cat1.cloth = "红色"
print(cat1.cloth)
print("------------")
cat2 = Cat()
print(cat2.type)
cat2.cloth = "白色"
print(cat2.cloth)
print("------------")
cat3 = Cat()
print(cat3.type)
'''
"""
定义格式二:
对象名.变量名 = 值
调用格式:
取值:对象名.变量名
赋值:对象名.变量名 = 值
"""
### 注意:格式二声明变量,如果变量名不存在则视为定义变量;如果变量名存在则视为调用变量
"""
两种变量定义的区别:
在类定义中声明的变量为公有变量/公有属性,每个对象均存在次变量对应的属性
在创建对象后声明的变量为独有变量/独有属性,仅当前对象存在此变量对应的属性
"""
# 类成员-----成员方法
"""
定义格式一:
class 类名:
____def 方法名(self):
________方法体
调用格式一:
对象名.方法名()
"""
# 注意:self仅在声明时占位,无需传递具体参数
# 演示类的成员方法
'''
class Cat:
def __init__(self):
self.type = "波斯猫"
self.name = None
def eat(self):
print("猫吃鱼")
def climb(self):
print("上树")
cat1 = Cat()
cat1.eat()
cat1.climb()
'''
"""
定义格式二:
class 类名:
____def 方法名(self,形参1,形参2,……)
________方法体
调用格式二:
对象名.方法名(实参1,实参2,……)
"""
'''
class Cat:
def __init__(self):
self.type = "波斯猫"
self.name = None
def eat(self):
print("猫吃鱼")
def climb(self,meter):
print("上树,爬了%d米"% meter)
cat1 = Cat()
cat1.eat()
cat1.climb(15)
'''
# __init__:
# __init__()方法在创建对象时被运行,无需手工调用;对于程序中声明、定义的方法在特定时机自动执行的方法,称为魔术方法。
# __str__()方法在使用print函数打印输出对象到屏幕时被运行,无需手工调用即可执行,被称为魔术方法
# self:self仅出线在成员方法中,指代执行该方法的对象
"""
定义格式:
def __str__(self):
____return 打印对象时显示的信息
"""
'''
class Cat:
def __init__(self):
self.type = "波斯猫"
self.name = None
def eat(self):
print("猫吃鱼")
def climb(self,meter):
print("上树,爬了%d米"% meter)
def __str__(self):
return "猫"
cat1 = Cat()
print(cat1)
# print(cat1.name)
# cat1.eat()
# cat1.climb(15)
'''
# 成员方法调用成员变量
# 公有变量:直接访问,通过self进行
# 独有变量:访问要慎重
'''class Cat:
def __init__(self):
self.type = "波斯猫"
self.name = None
def introduce(self):
print("我是%s,我叫%s,毛色是%s" % (self.type,self.name,self.color) )
cat1 = Cat()
cat1.name = "毛毛"
cat1.color = "红色"
cat1.introduce()
cat2 = Cat()
cat2.name = "哈哈"
cat2.color = "白色"
cat2.introduce()
'''
# 成员方法调用成员方法
# 直接访问,通过self进行
'''
class Cat:
def catch(self):
# 1.跳起 2.抓住 3.咬死
self.jump()
self.grasp()
self.bite()
def jump(self):
print("猫跳起来")
def grasp(self):
print("抓住老鼠")
def bite(self):
print("咬死它")
cat1 = Cat()
cat1.catch()
'''
# 案例:"手机“程序
"""
要求:手机电量默认100 # 变量
打游戏每次耗电10 # 行为
听歌每次消耗5 # 行为
打电话每次耗电4 # 行为
接电话每次耗电3 # 行为
充电补充电量 # 行为
分析:
1.定义phone
2.定义变量描述电量值
3.4个方法用于耗电操作
4,定义一个方法描述充电
5.运行程序,执行上述操作
"""
'''
class Phone:
def __init__(self):
self.power = 100
def game(self):
"""打游戏操作,耗电10"""
print("正在打游戏,耗电10")
self.power -= 10
def music(self):
print("正在听歌,耗电5")
self.power -= 5
def call(self):
print("正在打电话,耗电4")
self.power -= 4
def answer(self):
print("正在接电话,耗电3")
self.power -= 3
def charge(self,num):
print("正在充电,充电量是%d" % num)
self.power += num
def __str__(self):
return "当前手机电量%d" % self.power
# 创建一步电话,当前电量是100
sj = Phone()
# 执行耗电操作
sj.game()
print(sj)
sj.music()
print(sj)
sj.charge(8)
print(sj)
'''
# 手机加强版案例
# 1,手机耗电操作前,先判定电量是否足够完成此任务(if系列,根据结果不同做对应操作);
# 2,手机充电操作不能超过最大值(手机电量不能超过最大值100)
class Phone:
def __init__(self):
self.power = 100
def game(self):
"""打游戏操作,耗电10"""
# 判定当前电量是否足够完成打游戏的要求
if self.power >= 10:
print("正在打游戏,耗电10")
self.power -= 10
else:
print("当前电量不足,游戏操作被终止")
def music(self):
if self.power >= 5:
print("正在听歌,耗电5")
self.power -= 5
else:
print("当前电量不足,听歌操作被终止")
def call(self):
if self.power >= 4:
print("正在打电话,耗电4")
self.power -= 4
else:
print("当前电量不足,打电话操作被终止")
def answer(self):
if self.power >= 3:
print("正在接电话,耗电3")
self.power -= 3
else:
print("当前电量不足,接电话操作被终止")
def charge(self,num):
# 判断当前电量,与充电量作比较,执行不同内容
if self.power + num > 100: #过冲
print("充电操作提前结束,当前电量为:100")
self.power = 100
else:
# 正常充电
print("正在充电,充电量是%d" % num)
self.power += num
def __str__(self):
return "当前手机电量%d" % self.power
sj = Phone()
# 执行耗电操作
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
sj.game()
print(sj)
sj.music()
print(sj)
sj.call()
print(sj)
sj.charge(40)
print(sj)
sj.game()
print(sj)
sj.charge(80)
print(sj)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)