class Point: def __init__(self, x_or_obj = 0, y = 0): if isinstance(x_or_obj, Point): self.x = x_or_obj.x self.y = x_or_obj.y else: self.x = x_or_obj self.y = y m = Point(1,2) k = Point(m)
So I have difficulties with understanding why isinstance
evaluating True
in this code. I see it as int
is checking against class
, which makes no sense to me.
Advertisement
Answer
Looking at this article about isinstance
:
The isinstance() function returns True if the specified object is of the specified type, otherwise False.
In m
‘s definition:
m = Point(1,2)
You’re passing 1
as the value of x_or_obj
. 1
is an integer, not a Point
, therefore it evaluates to False
.
However, in k
‘s definition:
k = Point(m)
you’re passing m
as the value of x_or_obj
. You earlier defined m
as type Point
, so isinstance
evaluates to True.