type() 和 isinstance() 之间的区别
让我们通过下面的示例代码来理解 type() 和 isinstance() 之间的区别。
class Polygon:
def sides_no(self):
pass
class Triangle(Polygon):
def area(self):
pass
obj_polygon = Polygon()
obj_triangle = Triangle()
print(type(obj_triangle) == Triangle) # true
print(type(obj_triangle) == Polygon) # false
print(isinstance(obj_polygon, Polygon)) # true
print(isinstance(obj_triangle, Polygon)) # true
输出
True False True True
在上面的例子中,我们看到 type()
无法区分一个类的实例是否与基类有某种关联。在我们的例子中,虽然 obj_triangle
是子类 Triangle
的一个实例,但它继承自基类 Polygon
。如果你想将子类的对象与基类关联起来,你可以通过 isinstance()
实现这一点。