Как решить класс objecto не имеет атрибута - PullRequest
1 голос

новичок Python пользователь здесь. Итак, я пытаюсь создать программу, которая упорядочивает файлы моей (многих) папки загрузок.

Я создал объект класса для работы со многими папками:

class cContenedora:
def __int__(self, nCarp, dCarp): #nCarp Stands is the file name and dCarp Stands for file directory. 
    self.nCarp = nCarp
    self.dCarp = dCarp

Итак , y написал такой экземпляр:

Download = cContenedora()
Download.nCarp = "Downloads/" 
#The side bar is for making a path to move my archives from with  shutil.move(path, dest)
Download.dCarp = "/Users/MyName/Download/" 
#This is for searching the folder with os.listdir(Something.dCarp)

Затем я написал свою функцию, и она выглядит примерно так:

def ordenador(carpetaContenedora, formato, directorioFinal): #carpetaContenedora is a Download Folder

    carpetaContenedora = cContenedora() #carpetaContenedora one of the class objects
    dirCCont = os.listdir(carpetaContenedora.dCarp) #The to directory is carpetaContenedora.cCarp
    for a in dirCCont:
        if a.endswith(formato):
            path = "/Users/Aurelio Induni/" + carpetaContenedora().nCarp + a
            try:
                shutil.move(path, directorioFinal)
                print(Fore.GREEN + a + "fue movido exitosamente.")
            except:
                print(Fore.RED + "Error con el archivo" + a)
                pass

for trys in range(len(listaCarpetasDestino)-1): #Is a list full of directories.   
    for container in listaCarpetasFuente: #A short list of all my Downloads Folder.
        for formatx in listaFormatos: #listaFormatos is a list ful of format extensions like ".pdf"
            #try: #I disabled this to see the error istead of "Error Total"
                ordenador(container, formatx, listaCarpetasDestino[trys])
            #except:
                #print(Fore.RED + "Error Total") #I disabled this to see the error.

Но каждый раз, когда я запускаю ее, я получаю следующее :

AttributeError: 'cContenedora' object has no attribute 'dCarp'

В нем говорится, что ошибка находится в строке 47 (та, которая содержит os.listdir (carpetaContenedora.dCarp))

Я уверен, что это что-то мелкое. Python - это так удивительно, но также может быть очень неприятно незнание, что не так.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Произошла орфографическая ошибка при инициализации вашего экземпляра. Это должно быть « init » вместо « int ».

В классе cContenedora функция должна быть

class cContenedora:
       def __init__(self, nCarp, dCarp): 
           self.nCarp = nCarp
           self.dCarp = dCarp

Дополнительно, когда вы передаете параметр. Обязательно передайте оба параметра в строке с Value.

CContenedora(nCarp="something",dCarp="something")

0 голосов
/ 27 мая 2020

Инициализатор вашего класса, т.е. функция __init__() имеет 2 параметра nCarp и dCarp, но когда вы фактически создаете объект, параметры не передаются.

Ваша функция ordenador принимает первый параметр как carpetaContenedora, в первой строке той же переменной присваивается новый объект cContenedora, в этой строке исходные значения, которые вы передали, теряются навсегда.

Это может быть причиной ошибки. Обратитесь к по этой ссылке для получения дополнительных сведений о том, как создавать классы и создавать экземпляры объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...