вернуть несколько значений с помощью класса, чтобы получить входные данные от пользователей - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы создать класс для получения входных данных от пользователя, а затем вернуть все эти входные данные для последующего процесса. Например, после ввода данных от пользователей (имена файлов) программа сохраняет имена в списке. Позже программа загрузит список и выполнит процесс на основе каждого имени файла для одного процесса.

Больше объяснений:

  1. Пользователь вводит 3 имени файла, 3 имени файла вывода, Имя элемента в файле, имена файлов Json.
  2. Я создам класс (причина, по которой я его создаю, чтобы он выглядел красиво и не был слишком запутанным, поскольку он не содержится в функции или классе), чтобы получить эти входные данные и затем вернуть его.
  3. Программа читает входные данные один за другим и выполняет процесс одним скриптом.

Мой код:

class ReturnAllInput():
    def __init__(self,Morefilenames, Yourfilename, YourJsonName, Outputname, NameWithin):
        self.Morefilenames = Morefilenames
        self.Yourfilename = Yourfilename
        self.YourJsonName = YourJsonName
        self.Outputname = Outputname
        self.NameWithin = NameWithin

def allInput():

    Morefilenames = []
    while True:
        a = input("Please enter your Morefilenames " )
        if a == "Complete":
            break
        else:
            Morefilenames .append(a)
    # user typed complete
    print("You entered {} Morefilenames ".format(len(Morefilenames )))
    for n in Morefilenames :
       print('{}.txt'.format(n))

    Yourfilename= input("Yourfilename")
    YourJsonName= input("YourJsonName")
    Outputname= input("Outputname")
    NameWithin= input("NameWithin")

    return ReturnAllInput(Morefilenames , Yourfilename, YourJsonName, Outputname, NameWithin) 


for l in allinput(): #this is the section I do not know how to change it so that I could loop my return values of Morefilenames)
    if __name__ == "__main__":

Если мои коды недостаточно хороши, пожалуйста, дайте мне знать, чтобы я мог улучшить еще. Я все еще новичок и хотел бы узнать больше. Заранее спасибо.

1 Ответ

0 голосов
/ 03 сентября 2018

if __name__ == '__main__': просто используется, когда этот файл python используется в качестве сценария для управления выполнением, см. Что делать, если __name__ == "__main__": do? и обычно является внешним элементом управления логика, например:

if __name__ == '__main__':
    for l in allinput():

allinput() возвращает класс, который не может быть напрямую повторен. Если вы хотите перебрать Morefilenames, то обратитесь к этому атрибуту, например ::

if __name__ == '__main__':
    for l in allinput().Morefilenames:
        print(l)

Но вы теряете ссылку на созданный вами класс, поэтому, вероятно, лучше разделить эти вызовы:

if __name__ == '__main__':
    user_inputs = allinput()
    for l in user_inputs.Morefilenames:
        print(l)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...