Python 什么论点';iInstance';承担声明';k';对象
所以我很难理解为什么在这段代码中Python 什么论点';iInstance';承担声明';k';对象,python,python-3.x,isinstance,Python,Python 3.x,Isinstance,所以我很难理解为什么在这段代码中isinstance评估True。我认为,int正在对照class进行检查,这对我来说毫无意义。查看: 如果指定的对象属于指定的类型,则isinstance()函数返回True,否则返回False 在m的定义中: class Point: def __init__(self, x_or_obj = 0, y = 0): if isinstance(x_or_obj, Point): self.x = x_or_obj
isinstance
评估True
。我认为,int
正在对照class
进行检查,这对我来说毫无意义。查看:
如果指定的对象属于指定的类型,则isinstance()函数返回True,否则返回False
在m
的定义中:
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)
m = Point(1,2)
您正在将1
作为x\u或\u obj
的值传递1
是一个整数,而不是点
,因此其计算结果为False
但是,在k
的定义中:
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)
m = Point(1,2)
您将
m
作为x\u或\u obj
的值传递。您之前将m
定义为typePoint
,因此isinstance
的计算结果为True。m
是一个点。。。在创建第二个点时,是否将其传递到构造函数中?m=点(1,2)
将进入else
块,而k=点(m)
将进入if
。你有什么疑问?我不知道当我把m
作为参数传递时,x\u或
中的值是多少。它要么是int
要么是点,取决于传递给它的是什么。这两种情况都发生在上面。