Type()在Python 3中未检测到我的类(树)
遇到了一些我不能完全理解的事情。 请看下面的代码。 这是将二叉树转换为列表并将其记录为文件的程序的一部分。 我遇到的问题是,它无法检测到树对象,并跳转到if语句的else:part。 我甚至在进入if语句之前在for循环中输入了一个print类型(t),以检查它是否是树对象,并显示:Type()在Python 3中未检测到我的类(树),python,class,types,Python,Class,Types,遇到了一些我不能完全理解的事情。 请看下面的代码。 这是将二叉树转换为列表并将其记录为文件的程序的一部分。 我遇到的问题是,它无法检测到树对象,并跳转到if语句的else:part。 我甚至在进入if语句之前在for循环中输入了一个print类型(t),以检查它是否是树对象,并显示: <class '__main__.Tree'> 但是Python仍然跳过了if子句(我还尝试了type(t)is Tree和type(t)=Tree,结果相同)。一定有什么我不明白的,所以如果
<class '__main__.Tree'>
但是Python仍然跳过了if子句(我还尝试了type(t)is Tree和type(t)=Tree,结果相同)。一定有什么我不明白的,所以如果你能看到,请让我知道
程序跳过该死的if子句并进入else之后的第一步中的变量,原因我无法理解:):
copy={list}:[]
t={Tree}它能叫吗
cargo={str}‘它会叫吗’
而len(机器人水平)>0:
复制=机器人级别[:]
对于副本中的t:
印刷品(t型)
如果存在(t,树):
货物清单。附加(t.cargo)
bot_level.append(t.left)
bot_level.append(t.right)
del bot_级别[0]
其他:
货物清单。附加(无)
del bot_级别[0]
如果未执行print(type(t))
,则可能copy
/bot\u level
为空?很抱歉,由于我没有缩进打印,因此打印未显示。您现在应该看到它。在此处使用它之前,您是否只是在不经意间将树重新绑定(注意重新定义Tree
就是一个例子)?尝试print(type(t),Tree)
,看看两者是否相同,还有print(type(t)==Tree)
。我将在晚上检查,但考虑到它打印type(t)在if子句前面的as:class main.Tree中,我认为它与重新绑定无关。。。
copy = {list} <class 'list'>: [<__main__.Tree object at 0x0000001EAAE549B0>]
t = {Tree} can it bark
cargo = {str} 'can it bark'
while len(bot_level) > 0:
copy = bot_level[:]
for t in copy:
print(type(t))
if isinstance(t, Tree):
cargo_list.append(t.cargo)
bot_level.append(t.left)
bot_level.append(t.right)
del bot_level[0]
else:
cargo_list.append(None)
del bot_level[0]