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("没听清命令!")

你可能感兴趣的:(python,基础)