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()
    
    

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

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

    案例小结

    • 实例方法 —— 方法内部需要访问 实例属性
             实例方法内部可以使用 类名. 访问类属性
    • 类 方 法 —— 方法内部 只 需要访问 类属性
    • 静态方法 —— 方法内部,不需要访问 实例属性 和 类属性
  • 相关阅读:
    只有标题1没有标题2、3的解决方法
    python函数学习总结
    python基础知识学习总结
    StructuredStreaming中,如果trigger触发时前一批数据还没处理完怎么办?
    StructuredStreaming解析JSON CVS
    StructuredStreaming整合kafka
    kafka--如何选择Kafka的分区数和消费者个数
    kafka中groupid作用
    查看kafka版本
    spark项目java与scala相互调用打包
  • 原文地址:https://www.cnblogs.com/onefine/p/10499388.html
Copyright © 2011-2022 走看看