PYTHON基础-面向对象编程(OOP)多态

多态案例演练

在这里插入图片描述
在这里插入图片描述

class Dog(object):

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

    def game(self):
        print("%s 蹦蹦跳跳的玩耍" % self.name)

class XiaoTianDog(Dog):

    def game(self):
        print("%s 飞到天上去玩耍" % self.name)

class Person(object):

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

    def game_with_dog(self, dog):

        print("%s 和 %s 快乐的玩耍" % (self.name, dog.name))

        # 让狗玩耍 - 父类中定义
        dog.game()

# 1、创建一个狗对象
# wangcai = Dog("旺财")
wangcai = XiaoTianDog("飞天旺财")

# 2、创建一个小明对象
xiaoming = Person("小明")

# 3、让小明调用和狗玩的方法
xiaoming.game_with_dog(wangcai)

在这里插入图片描述

类的结构

在这里插入图片描述

实例化

1、对象\ 类的实例、创建对象的动作\ 实例化、对象的属性\ 实例属性、对象调用的方法\ 实例方法
2、每一个对象都有自己独立的内存空间,保存各自不同的属性
3、多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部。
在这里插入图片描述

类是一个特殊的对象

在这里插入图片描述
在这里插入图片描述

类属性和实例属性

概念和使用

在这里插入图片描述

class Tool(object):

    # 使用赋值语句来定义类属性,记录所有工具对象的数量
    count = 0

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

        # 让类属性的值+1
        Tool.count += 1

# 1、创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")

# 2、输出工具对象的总数
print(Tool.count)

在这里插入图片描述

属性的获取机制

类名.类属性对象.类属性
对象.类属性 = 值: 只会给对象添加一个属性,不会影响到类属性的值
在这里插入图片描述

class Tool(object):

    # 使用赋值语句来定义类属性,记录所有工具对象的数量
    count = 0

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

        # 让类属性的值+1
        Tool.count += 1

# 1、创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")

# 2、输出工具对象的总数
# print(Tool.count)
print("工具对象总数 %d" % tool1.count)

在这里插入图片描述

class Tool(object):

    # 使用赋值语句来定义类属性,记录所有工具对象的数量
    count = 0

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

        # 让类属性的值+1
        Tool.count += 1

# 1、创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")

# 2、输出工具对象的总数
tool3.count = 99
print("工具对象总数 %d" % tool3.count)
print("===> %d" % Tool.count)

在这里插入图片描述

类方法和静态方法

类方法

类名.类方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

class Tool(object):

    # 使用赋值语句来定义类属性,记录所有工具对象的数量
    count = 0

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

        # 让类属性的值+1
        Tool.count += 1

    @classmethod
    def show_tool_count(cls):

        print("工具对象的数量 %d" % cls.count)


# 1、创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")

# 2、调用类方法
Tool.show_tool_count()

在这里插入图片描述

静态方法

类名.静态方法
在这里插入图片描述
在这里插入图片描述

class Dog(object):

    @staticmethod
    def run():
        # 不访问实例属性/类属性
        print("小狗要跑")


# 通过类名,调用静态方法 - 不需要创建对象,不需要传递参数
Dog.run()

在这里插入图片描述

方法综合案例

在这里插入图片描述

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)

# 1、查看游戏的帮助信息
Game.show_help()

# 2、查看历史最高分
Game.show_top_score()

# 3、创建游戏对象
game = Game("小明")

game.start_game()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值