Python isinstance() 函数

描述

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 与 type() 区别:

type() 不会认为子类是一种父类类型,不考虑继承关系。

isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()

语法

以下是 isinstance() 方法的语法:

isinstance(object, classinfo)

  • object – 实例对象。
  • classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组。

返回值

如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False

例子:

class Cavalry:
    def attack(self):
        print("见识一下暗影岛的力量!")
    def defend(self):
        print("骑兵防守")

class Archer:
    def attack(self):
        print("明智之选,我瞄的很准,正对眉心!")
    def defend(self):
        print("弓箭手防守")

class Master:
    def attack(self):
        print("即使是死亡,也会因为我的出场而颤抖不已!")
    def defend(self):
        print("法师防守")

if __name__ == '__main__':
    Army = []

    c = Cavalry()
    a = Archer()
    m = Master()

    Army.append(c)
    Army.append(a)
    Army.append(m)

    command = input("请将军下令:")
    if command == "一起上":
        for var in Army:
            var.attack()
    elif command == "布阵":
        for var in Army:
            var.defend()
    elif command == "弓箭手":
        for var in Army:
            # 判断var是Archer的实例
            if isinstance(var,Archer):
                var.attack()
            else:
                var.defend()
    elif command == "骑兵":
        for var in Army:
            if isinstance(var,Cavalry):
                var.attack()
            else:
                var.defend()
    elif command == "法师":
        for var in Army:
            if isinstance(var,Master):
                var.attack()
            else:
                var.defend()
    else:
        print("没听清命令!")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值