- isinstance
isinstance判断一个对象是不是一个类或者是父类的实例。第一个参数是对象,第二个对象是类或者是该类的父类,这时才为真。
class A: pass class B(A): pass b = B() print(isinstance(b, B)) # True print(isinstance(b, A)) # True
- issubclass
判断一个类是不是两一个类的派生类,即是不是继承自这个类。第一个参数必须是一个类,否则会报错。
class A: pass class B(A): pass b = B() print(issubclass(B, A)) # True print(issubclass(b, B)) # TypeError: issubclass() arg 1 must be a class
- type
type(object_or_name, bases, dict) type(object) -> the object's type type(name, bases, dict) -> a new type
type可以有三个参数,当有一个参数时,表示当前对象的类型。当有三个对象时,表示一个新类型,实际上相当于新创建了一个类:
class SuperA: def hello(self): print('Hello') A = type('A', (SuperA,), {'NEW': 1}) a = A() print(a.NEW) a.hello() 1 Hello
第一个参数表示新类的名字,第二个参数是一个基类(父类)元组,第三个参数是一个字典,用来定义新类的成员。
定义的类和平时创建的类一样,可以实例化对象,可以调用类成员包括继承过来的成员。