Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么论点';iInstance';承担声明';k';对象_Python_Python 3.x_Isinstance - Fatal编程技术网

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
定义为type
Point
,因此
isinstance
的计算结果为True。

m
是一个点。。。在创建第二个点时,是否将其传递到构造函数中?
m=点(1,2)
将进入
else
块,而
k=点(m)
将进入
if
。你有什么疑问?我不知道当我把
m
作为参数传递时,
x\u或
中的值是多少。它要么是
int
要么是
点,取决于传递给它的是什么。这两种情况都发生在上面。