爱睡懒觉 发表于 2023-5-2 10:13:02

关于返回值的类型问题

tkinter.Misc.__bases__的返回值为(<class 'object'>,)
那如果我需要用if条件语句判断tkinter.Misc.__bases__ 的返回值是否为(<class 'object'>,)该如何写代码呢
已知直接写 if tkinter.Misc.__bases__ == (<class 'object'>,)
tkinter.Misc.__bases__   ==<class 'object'>
tkinter.Misc.__bases__   =="<class 'object'>"
tkinter.Misc.__bases__   =="(<class 'object'>,)"
都是错误的
且tkinter.Misc.__bases__的返回值既不是字符串也不是元祖
{:5_92:}

陶远航 发表于 2023-5-2 10:13:43

可以使用 isinstance() 函数来判断返回值是否为 object 类型的元组。例如:
if isinstance(tkinter.Misc.__bases__, tuple) and len(tkinter.Misc.__bases__) == 1 and tkinter.Misc.__bases__ is object:
    # do something
解释一下上面的代码:

isinstance(tkinter.Misc.bases, tuple) 检查返回值是否为元组类型
len(tkinter.Misc.bases) == 1 确保返回值只有一个元素
tkinter.Misc.bases is object 检查第一个元素是否为 object 类型
需要同时满足这三个条件,才能判断返回值是否为(<class 'object'>,)。

isdkz 发表于 2023-5-2 10:14:57

本帖最后由 isdkz 于 2023-5-2 10:17 编辑

你可以将<class 'object'>放在一个元组中进行比较:

if tkinter.Misc.__bases__ == (object,):
    # 你的代码


在这里我们将object放在一个元组中,然后比较两个元组是否相等。这样就能正确地判断tkinter.Misc.__bases__的返回值是否为(<class 'object'>,) 。注意,这里我们用的是object而不是<class 'object'> 。
页: [1]
查看完整版本: 关于返回值的类型问题