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
调用不同,但不清楚您期望的是什么。你能澄清一下你的期望和原因吗?谢谢!完全正确,我很困惑,你的回答很清楚。