面向对象:Python中的方法错误

面向对象:Python中的方法错误,python,Python,我制作了一个Python程序,它有一个接收文件名和数字数据的接口。当我创建操作文件名、目录等的方法时,它会返回一个错误 我相信错误来自于对象定向。我怎样才能解决这个问题 我将程序分为两部分:一部分用于解决我的问题,无需面向对象,另一部分用于接收用户数据 错误: Exception in Tkinter callback Traceback (most recent call last): File "C:\Python27\lib\lib-tk\Tkinter.py", line 1541,

我制作了一个Python程序,它有一个接收文件名和数字数据的接口。当我创建操作文件名、目录等的方法时,它会返回一个错误

我相信错误来自于对象定向。我怎样才能解决这个问题

我将程序分为两部分:一部分用于解决我的问题,无需面向对象,另一部分用于接收用户数据

错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1541, in __call__
    return self.func(*args)
  File "teste.py", line 60, in verificaSenha
    if (Procura_nome(nome_arq) == 1):
NameError: global name 'Procura_nome' is not defined
完整代码:

有问题的方法:

def Procura_nome(nome_arq):
    dir = Percorre_dir_entrada()
    arquivo = dir + dir[2] + nome_arq + + ".shp"
    os.path.isfile(nome_arq)
    try:
        with open(arquivo, 'r') as f:
            return 1
    except IOError:
        return 0

所有python方法类都必须将self param作为第一个参数,此参数引用类的实例,并且在类内使用类方法和属性时,应使用self引用它们

您可能需要将self添加到文件中的所有方法类中

您还需要删除第3行上的一个“+”

def Procura_nome(self, nome_arq):
    dir = self.Percorre_dir_entrada()
    arquivo = dir + dir[2] + nome_arq + ".shp"
    os.path.isfile(nome_arq)
    try:
        with open(arquivo, 'r') as f:
            return 1
    except IOError:
        return 0
您的Percorre_dir_entrada和Percorre_dir_saida函数在不同的文件上执行完全相同的操作,您应该考虑执行一个将文件名作为参数的通用版本,如下所示:

def Percorre_dir(self, file_name):
    achou = 0
    dirlist = os.listdir(".")
    for i in dirlist:
        filename = os.path.abspath(i)
        if((filename.find(file_name)) != -1):
            achou = 1
            return filename
    if(achou == 0):
        return 0
那就叫它:

Percorre_dir("Saida")
Percorre_dir("Entrada")

Procura_nome应该是类的一部分吗?是的,所有方法都应该是@depperm类的一部分然后你需要self成为所有方法的第一个参数,比如Procura_nomeself,nome\u arq:@depperm如何引用该方法?self.Procura_nome_arq?是的,你也需要这样做