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

1. 类变量

1.1 类变量的概念

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

1.2 定义类变量的语法格式

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

类名下直接定义变量优化

1.3 调用类变量语法格式

赋值格式:spa

类名.类变量名 = 值code

取值格式:cdn

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

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

1.4 注意事项

  • 类变量推荐使用类名取值访问,也可使用对象名取值访问
  • 类变量只能经过类名修改;使用对象名调用类变量修改类变量的值时会建立新的对象独有变量;若是此时对象具备同名对象变量,则会变成修改对应的变量值
  • 类变量能够私有化

2. 类方法

2.1 类方法的概念

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

2.2 定义类方法基本语法

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

2.3 调用类方法语法格式

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

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

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时提示关机等,其它可自行操做。

相关文章
相关标签/搜索