跳到主要内容

Python 程序:区分type()和isinstance()

要理解这个例子,你应当了解以下Python 编程主题的知识:

type() 和 instance() 之间的区别

让我们通过下面的示例代码来理解 type()instance() 之间的区别。

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。如果你想将子类的对象与基类相关联,你可以通过 instance() 来实现。