面向Python,面向对象(基础4(手机对象案例))

1. 类变量

1.1 类变量的概念

类变量是定义在类中,不属于某个具体对象的特征,被所有对象共同使用的特征,属于整个类的变量。

1.2 定义类变量的语法格式

class 类名:
    变量名 = 值
复制代码

类名下直接定义变量

1.3 调用类变量语法格式

赋值格式:

类名.类变量名 = 值

取值格式:

类名.类变量名(推荐)

对象名.类变量名(不推荐)

1.4 注意事项

  • 类变量推荐使用类名取值访问,也可以使用对象名取值访问
  • 类变量只能通过类名修改;使用对象名调用类变量修改类变量的值时会创建新的对象独有变量;如果此时对象具有同名对象变量,则会变成修改对应的变量值
  • 类变量可以私有化

2. 类方法

2.1 类方法的概念

类方法是定义在类中,不属于某个具体对象的行为,被所有对象共同使用的行为,类方法在类中公有。

2.2 定义类方法基本语法

class 类名:
    @classmethod
    def 类方法名(cls,形参1,形参2,...):
        类方法体
复制代码

2.3 调用类方法语法格式

类名.类方法名(实参1,实参2,...)(推荐)

对象名.类方法名(实参1,实参2,...)(不推荐)

2.4 注意事项

  • 类方法中不允许使用实例变量和实例方法
  • 类方法中允许使用类变量和类方法,通过第一个参数cls进行
  • 实例方法中允许使用类变量和类方法

3. 静态方法

3.1 定义静态方法语法格式

class 类名:
    @staticmethod
        def 方法名(形参1,形参2,…):
            方法体
复制代码

3.2 调用静态方法语法格式

类名.静态方法名(实参1,实参2,…)(推荐)

对象名.静态方法名(实参1,实参2,…)(不推荐)

3.3 各种方法定义规则

  • 只访问成员变量的方法,定义成实例方法
  • 只访问类变量的方法,定义类方法
  • 既访问成员变量,也访问类变量的方法,定义成实例方法
  • 既不访问成员变量,也不访问类变量,定义成静态方法

案例: 手机

"""
演示手机案例
要求:
    手机电量默认是100
   打游戏每次消耗电量10
   听歌每次消耗电量5
   打电话每次消耗电量4
   接电话每次消耗电量3
   充电可以为手机补充电量
"""
# 分析
# 1. 定义类Phone
# 2. 定义变量用于描述电量值
# 3. 定义4个方法用于描述耗电操作
# 4. 定义1个方法用于描述充电操作
# 5. 运行程序,执行上述操作,观察结果

class Phone():
    def __init__(self):
        self.hp = 100

    def game(self):
        # 打游戏耗电10
        print("打游戏操作,耗电10")
        self.hp -= 10
    
    def music(self):
        # 听歌耗电5
        print("听歌操作,耗电5")
        self.hp -= 5

    def call(self):
        # 打电话耗电4
        print("打电话操作,耗电4")
        self.hp -= 4

    def answer(self):
        # 听歌耗电3
        print("接电话操作,耗电3")
        self.hp -= 3
    
    def charge(self, num):
        print("充电断开,已充%d" % num)
        self.hp += num
    def __str__(self):
        return "当前手机电量为:%d" % self.hp
# 创建一部电话,当前电量是100
p = Phone()
# 调用耗电操作
p.game()
print(p)
p.game()
print(p)
p.game()
print(p)
p.charge(10)
print(p)
复制代码

案例:手机修复加强版

"""
演示手机修复加强版案例
要求:
    手机耗电操作前要先判定电量是否足够完成此项任务
    手机充电操作不能充电超过最大值
"""
# 分析
# 1. 耗电操作之前必须进行判定(if系列),根据结果不同做对应的事情
# 2. 充电操作必须进行判定,手机电量不能超过最大值100
class Phone:
    def __init__(self):
        self.hp = 100
    
    def game(self):
    """打游戏操作,耗电10"""
    # 判定当前电量是否能够完成打游戏的请求
        if self.hp >= 10:
            # 正常运行,减少电量
            print("打游戏操作,耗电10")
            self.hp -= 10
        else:
            # 不能正常运行,给出提示
            print("当前电量不足,无法完成操作")

    def music(self):
    # 判定当前电量是否能够完成听歌的请求
        if self.hp >= 5:
            # 正常运行,减少电量
            print("听歌操作,耗电5")
            self.hp -= 5
        else:
            # 不能正常运行,给出提示
            print("当前电量不足,无法完成操作")
    
    def call(self):
    # 判定当前电量是否能够完成打电话的请求
        if self.hp >= 4:
            # 正常运行,减少电量
            print("打电话操作,耗电4")
            self.hp -= 4
        else:
            # 不能正常运行,给出提示
            print("当前电量不足,无法完成操作")
    
    def answer(self):
    # 判定当前电量是否能够完成接电话的请求
        if self.hp >= 3:
            # 正常运行,减少电量
            print("接电话操作,耗电3")
            self.hp -= 3
        else:
            # 不能正常运行,给出提示
            print("当前电量不足,无法完成操作")
    def charge(self,num):
        # 判断当前电量,与充电做比较
        if self.hp + num > 100:
        # 过充
            print("充电已完成,请移除充电器,当前电量为:100")
        # 赋值100,解决过充出现150等
            self.hp = 100
        else:
        # 正常充
            print("充电断开,充电%d" % num)
            self.hp += num
    def __str__(self):
        return "当前手机电量为:%d" % self.hp
p = Phone()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
print(p)
p.charge(50)
print(p)
复制代码

案例还可优化,小问题电量=0时提示关机等,其它可自行操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值