zoukankan      html  css  js  c++  java
  • 轻松搞懂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()
    
    

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

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

    案例小结

    • 实例方法 —— 方法内部需要访问 实例属性
             实例方法内部可以使用 类名. 访问类属性
    • 类 方 法 —— 方法内部 只 需要访问 类属性
    • 静态方法 —— 方法内部,不需要访问 实例属性 和 类属性
  • 相关阅读:
    video 安卓ios系统 浏览器 全屏播放以及自动播放的问题
    echarts 雷达图的个性化设置
    AtCoder Grand Contest 015 题解
    AtCoder Grand Contest 014 题解
    bzoj 3242: [Noi2013]快餐店
    bzoj 2794: Cloakroom dp
    bzoj 4261: 建设游乐场 费用流
    uoj problem 31 猪猪侠再战括号序列
    APIO2017 游记
    CTSC2017 游记
  • 原文地址:https://www.cnblogs.com/onefine/p/10499388.html
Copyright © 2011-2022 走看看