python如何检查对象是否为给定类或其子类的一个实例?
可使用内置函数 isinstance(obj, cls)
。 你可以提供一个元组而不是单个类来检查某个对象是否为任意多个类当中某一个类的实例,例如 isinstance(obj, (class1, class2, ...))
,也可以检查某个对象是否为 Python 内置类型当中某一个类型的对象,例如 isinstance(obj, str)
或 isinstance(obj, (int, float, complex))
。
请注意大多数程序不会经常对用户自定义类使用 isinstance()
。 如果是你自已开发的类,更正确的面向对象风格是在类中定义方法来封装特定的行为,而不是检查对象的类并根据它属于什么类来做不同的事。 例如,如果你有一个执行某些操作的函数:
def search(obj): if isinstance(obj, Mailbox): ... # code to search a mailbox elif isinstance(obj, Document): ... # code to search a document elif ...