• 轻松搞懂Python的属性和方法


     目标,区分一下几个概念:

    • 实例属性
    • 类属性
    • 实例方法
    • 类方法
    • 静态方法

     先来看一下需求:

    1. 设计一个 Game 类

    2. 属性

    • 定义一个 类属性 top_score 记录游戏的 历史最高分
    • 定义一个 实例属性 player_name 记录 当前游戏的玩家姓名
    1. 方法
    • 静态方法 show_help 显示游戏帮助信息
    • 类方法 show_top_score 显示历史最高分
    • 实例方法 start_game 开始当前玩家的游戏
    1. 主程序步骤
      • 查看帮助信息
      • 查看历史最高分
      • 创建游戏对象,开始游戏

     类图:

    Game类图

     实现:

    
    class Game(object):
        top_score = 0   # 游戏最高分,类属性
    
        @staticmethod
        def show_help():  # 静态方法
            print("帮助信息:让僵尸走进房间")
    
        @classmethod
        def show_top_score(cls):  # 类方法
            print("游戏最高分是 %d" % cls.top_score)
    
        def __init__(self, player_name):
            self.player_name = player_name  # 实例属性
    
        def start_game(self):  # 实例方法
            print("[%s] 开始游戏..." % self.player_name)
            
            Game.top_score = 999   # 使用类名.修改历史最高分
            
    

     测试:

    
    # 1. 查看游戏帮助
    Game.show_help()
    
    # 2. 查看游戏最高分
    Game.show_top_score()
    
    # 3. 创建游戏对象,开始游戏
    game = Game("小明")
    game.start_game()
    
    # 4. 游戏结束,查看游戏最高分
    Game.show_top_score()
    
    

    提问: 如果方法内部 即需要访问 实例属性,又需要访问 类属性,应该定义成什么方法?

    应该定义 实例方法 因为,类只有一个,在 实例方法 内部可以使用 类名. 访问类属性

    案例小结

    • 实例方法 —— 方法内部需要访问 实例属性
             实例方法内部可以使用 类名. 访问类属性
    • 类 方 法 —— 方法内部 只 需要访问 类属性
    • 静态方法 —— 方法内部,不需要访问 实例属性 和 类属性
  • 相关阅读:
    20100320 ~ 20100420 小结与本月计划
    datamining的思考
    谈谈网络蜘蛛 爬开心网001的一些体会
    将 ASP.NET MVC3 Razor 项目部署到虚拟主机中
    Eclipse代码中中文字显示很小的解决办法
    U8800一键ROOT删除定制软件 安装新版Docment to go
    Android(安卓) U8800 长按 搜索键、返回键 锁屏或解锁的设置方法
    JDK5.0新特性系列3.枚举类型
    JDK5.0新特性系列1.自动装箱和拆箱
    网游运营基本概念及专业术语
  • 原文地址:https://www.cnblogs.com/onefine/p/10499388.html
Copyright © 2020-2023  润新知