1. 如何检查对象是否为给定类或其子类的一个实例?
可使用内置函数 isinstance(obj, cls)。可以检测对象是否属于多个类中某一个的实例,只要把单个类换成元组即可,比如 isinstance(obj, (class1, class2, ...)),还可以检查对象是否属于某个 Python 内置类型,例如 isinstance(obj, str) 或 isinstance(obj, (int, float, complex))。
请注意 isinstance() 还会检测派生自 abstract base class 的虚继承。 因此对于已注册的类,即便没有直接或间接继承自抽象基类,对抽象基类的检测都将返回 True 。要想检测“真正的继承”,请扫描类的 MRO。