NameError:未定义名称“getTempo”

2024-09-29 00:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个错误的定义函数“getTempo”,我不知道为什么。。。谢谢你的帮助。你知道吗

示例:

L=[Musica("aerossol",4.9),Musica("lua",5.3),Musica("monte",3.2),Musica("rita",4.7)];getTempo("lua",L)

应给出:

你知道吗lua:5.3你知道吗

第5.3条


class Musica:
    def __init__(self,nome,tempo):
        self.nome=nome
        self.tempo=tempo
    def __repr__(self):
        return self.nome+":"+str(self.tempo)

    def getTempo(nomeMusica,ListaMusicas):
        if ListaMusicas==[]:
            print ("Inexistente")
        else:
            meio=len(ListaMusicas)//2
            print (ListaMusicas[meio])
            A = [i[0] for i in ListaMusicas]
            B = [i[1] for i in ListaMusicas]

            if nomeMusica==A[meio]:
                print (B[meio])
            elif nomeMusica<A[meio]:
                return getTempo(nomeMusica,ListaMusicas[:meio])
            else:
                return getTempo(nomeMusica,ListaMusicas[(meio+1):])

Tags: selfforreturnifdefelsemeiolua
1条回答
网友
1楼 · 发布于 2024-09-29 00:17:14

python中,与JavaC++等语言不同,实例属性和方法必须在实例上访问,因此必须编写self.getTempo,以便getTempo进行解析。你知道吗

编辑-选择性读取失败

您还需要确保所有方法定义都包含类实例本身的参数,该参数将是传递的第一个参数。按照惯例,这是self参数,但它可以是您选择的任何名称。以下是修改后的函数定义:

def getTempo(self, nomeMusica,ListaMusicas): # Changed
    if ListaMusicas==[]:
        print ("Inexistente")
    else:
        meio=len(ListaMusicas)//2
        print (ListaMusicas[meio])
        A = [i[0] for i in ListaMusicas]
        B = [i[1] for i in ListaMusicas]

        if nomeMusica==A[meio]:
            print (B[meio])
        elif nomeMusica<A[meio]:
            return self.getTempo(nomeMusica,ListaMusicas[:meio]) # Changed
        else:
            return self.getTempo(nomeMusica,ListaMusicas[(meio+1):]) # Changed

相关问题 更多 >