A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 子沫999 初级黑马   /  2018-8-1 23:26  /  1126 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类属性和类方法
面向对象五大块:类属性、实例属性、类方法、实例方法、静态方法
通过 类名.的方式可以 访问类的属性 或者 调用类的方法
一、.类属性
(1)定义类属性:使用赋值语句
(2)属性的获取机制:向上查找机制
​          a.首先在对象内部查找对象属性
​             b.没有找到就会向上寻找类属性
(3)访问类属性有两种方式:类名.类属性 / 对象.类属性 (不推荐)
!!!:对象.类属性 = 值 赋值语句,只会 给对象添加一个属性,而不会影响到 类属性的值
二、类方法和静态方法
(一)类方法
1.语法格式:@classmethod
​            def 类方法名(cls):
​                pass
2.调用方法:
·        通过 类名. 调用 类方法调用方法时,不需要传递 cls 参数(也可将对象作为参数调用,输出对象属性)
·        在方法内部
o    可以通过 cls. 访问类的属性
o    也可以通过 cls. 调用其他的类方法
(二)静态方法
1.语法格式:@staticmethod
​            def 静态方法名():
​               pass
2.调用:通过 类名. 调用 静态方法
注:(1)通过类名.调用静态方法,不需要创建对象,但创建对象,对象调用也是可以的
(2)静态方法虽然是不需要 访问 实例属性/类属性 或者调用 实例方法/类方法,但是它是可以 访问 实例属性/类属性 或者调用 **实例方法/类方法
!!!
(1)类属性、实例方法、类方法、静态方法都存在类空间下,实例属性存在实例对象空间内
(2)在类空间下的方法和属性都可用“类名.”来调用,但是针对实例方法的调用最好用“对象.”调用
属性方法的选取
实例方法 ——方法内部需要访问 实例属性
·        实例方法 内部可以使用 类名. 访问类属性
·        类方法** —— 方法内部 需要访问 类属性
·        静态方法 —— 方法内部,不需要访问实例属性类属性
·        即需要访问 实例属性,又需要访问 类属性 :实例方法

                           加上一个方法的简单综合案例
# 设计一个 Game 类
# 属性:
# 定义一个 类属性 top_score 记录游戏的 历史最高分
# 定义一个 实例属性 player_name 记录 当前游戏的玩家姓名
# 方法:
# 静态方法 show_help 显示游戏帮助信息
# 类方法 show_top_score 显示历史最高分
# 实例方法 start_game 开始当前玩家的游戏


class Game(object):
    # 历史最高分
    top_score = 0

    def __init__(self, player_name):
        self.player_name = player_name

    @staticmethod
    def show_help():
        print("帮助:让僵尸走出房间")

    @classmethod
    def show_top_score(cls):
        print("游戏最高分为 %d" % cls.top_score)

    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()
Game.start_game(game)

Game.show_top_score()


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马