Saya pikir saya harus mendapatkan Benar, tetapi saya mendapatkan Salah dan tidak bisa mengerti mengapa. Terima kasih sebelumnya untuk melihat ini.

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
James Mead 2 Desember 2017, 15:05

1 menjawab

Jawaban Terbaik

Alasan itu salah adalah karena 'permainan' adalah suatu fungsi, sedangkan p adalah apa yang dikembalikan oleh fungsi 'permainan', yang merupakan tupel.

Jadi pada dasarnya Anda memeriksa apakah Tuple (variabel p) adalah turunan dari fungsi, yang dievaluasi oleh tipe (permainan).

Jika Anda ingin menggunakan isinstance dengan cara ini, Anda dapat membuat kelas bernama game dan memeriksa isinstance(p,game), atau dalam fungsi seperti yang Anda miliki, isinstance(myobj,game).

1
T Bell 2 Desember 2017, 12:11