Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 使用isinstance()可以覆盖类型_Python_Python 3.x_Overwrite_Isinstance - Fatal编程技术网

Python 使用isinstance()可以覆盖类型

Python 使用isinstance()可以覆盖类型,python,python-3.x,overwrite,isinstance,Python,Python 3.x,Overwrite,Isinstance,使用isinstance()更改了dict的类类型 为什么会这样?我知道使用内置设备可以防止这种情况发生,但我想更好地理解为什么会发生这种情况 250 def printPretty(records,num,title='Summary:'): 251 import pdb; pdb.set_trace() 252 if isinstance(records, list): 253 print ("\n{}\n{}".format(

使用
isinstance()
更改了
dict的类类型
为什么会这样?我知道使用内置设备可以防止这种情况发生,但我想更好地理解为什么会发生这种情况

250     def printPretty(records,num,title='Summary:'):
251         import pdb; pdb.set_trace()
252         if isinstance(records, list):
253             print ("\n{}\n{}".format(title.center(120),"="*120))
254             table = list()
255             for i in records:
...
263         elif isinstance(records, dict):
264  ->         for key in records:
265                 if isinstance(records[key], Param):
266                     for i in records[key]:
267                         print (i)
268                 print ("")
269     
(Pdb) type(records)
<class 'dict'>
(Pdb) type(dict)
<class 'type'><b>
250 def printPretty(记录,num,title='Summary:'):
251进口pdb;pdb.set_trace()
252如果存在(记录、列表):
253打印(“\n{}\n{}.”格式(title.center(120),“=”*120))
254表=列表()
记录中的i为255:
...
263 elif isinstance(记录、记录):
264->对于输入记录:
265如果存在(记录[键],参数):
266对于记录中的i[键]:
267印刷品(一)
268字(“”)
269
(Pdb)类型(记录)
(Pdb)类型(dict)

我想你的困惑在于
键入(dict)!=dict
。除了最后两行之外,让我们完全放弃您的示例,我将使用交互式python来演示这两行

>>> type(dict)
<type 'type'>
>>> type(dict())
<type 'dict'>
>类型(dict)
>>>类型(dict())

这是因为dict
不是字典,而是字典的类型
dict()
{}
(或
{1:2,…}
)是字典的实例。这些实例的类型为
dict
,并且满足
isinstance(\uuuuuuuuu,dict)

isinstance
不会改变事物的类型。此处没有任何内容表明任何内容的类型已更改。您认为为什么会发生任何类型更改?您的问题表明,您期望的结果与您在最后进行的
type
调用不同,但不清楚您期望的是什么。你能澄清一下你的期望和原因吗?谢谢!完全正确,我很困惑,你的回答很清楚。