为什么我从print(相同(p)函数)得到False?我应该得到True

时间:2017-12-02 12:05:02

标签: python

我想我应该变成现实,但我变得虚假而无法理解为什么。提前感谢您对此进行调查。

def game(name, mix, good, notgood, allv):
    return str(name), tuple(mix), list(good), list(notgood), list(allv)


def create_game(name, mix):
    return game(name, mix, gap(mix), gap(mix, 0), gap(mix, 1))


def gap(ltras, *args):
    temp = []
    if len(args) == 0:
        temp.append("ABCD")
    if len(args) == 1 and args[0] == 0:
        temp.append("A")
    if len(args) == 1 and args[0] == 1:
        temp.append("AB")
    temp.sort()
    temp.sort(key=len)
    return temp


def same(myobj):
    return isinstance(myobj, type(game))


ourmix = ("T", "E", "S", "T")
p = create_game("ALFA", ourmix)
print(same(p))

1 个答案:

答案 0 :(得分:1)

它错误的原因是因为游戏'是一个功能,而p是功能游戏'返回,这是一个元组。

所以基本上你要检查一个元组(变量p)是否是一个函数实例,它是(游戏)评估的类型。

如果你想以这种方式使用isinstance,你可以创建一个名为game的类,检查isinstance(p,game),或者像你拥有的那样,isinstance(myobj,game)。