logik4321
@logik4321
Человек, землянин

Как правильно реализовать ввод данных?

Вопрос банальный, и возможно глупый....но как Реализваоть ввод и вывод данных В ООП Питон...

У меня ошибки какие то возникают....В книге эрика метиз не говориться об этом ничего

Скрин:
class Umar():
    def __init__(self, firstname, lastname, patronymic, age, birthday, jobs, car):
        self.firstname = firstname
        self.lastname = lastname
        self.patronymic = patronymic
        self.age = age
        self.birthday = birthday
        self.jobs = jobs
        self.car = car


    def print_info(self):
        full_info = "Имя: " + self.firstname + " Фамилия: " + self.lastname + " Отчество: " + self.patronymic + " Возраст: " + \
                    str(self.age) + " День рождения: " + self.birthday + " Работа: " + self.jobs + " Машина: " + self.car
        return full_info.title()

    def input_info(self, firstnames, lastnames, patronymics, ages, birthdays, jobss, cars):
        while True:
            print("Введите ваши данные или нажмите 'q' что-бы выйти из программы!")
            firstnames = input("Введите ваше имя")
            if firstnames == 'q':
                break
            lastnames = input("Введите вашу фамилию")
            if lastnames == 'q':
                break
            patronymics = input("Введите ваше отчество")
            if patronymics == 'q':
                break
            ages = str(input("Введите ваш возраст"))
            if ages == 'q':
                break
            birthdays = input("Ваша дата рождения")
            if birthdays == 'q':
                break
            jobss = input("Ваша работа")
            if jobss == 'q':
                break
            cars = input("Ваша машина")
            if cars == 'q':
                break



umar = Umar()
umar.input_info()
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Vindicar
Ну во-первых, что именно ты пытаешься сделать?
> firstnames = input("Введите ваше имя")
Ты присваиваешь введённое пользователем значение локальной переменной метода input_info() (точнее, его параметру). Питон не предусматривает передачу параметров по ссылке, так что это присвоенное значение никогда выйдет за пределы метода, и будет потеряно, когда метод завершится.
Далее, зачем while True + break? Чем не устроил простой return?
Наконец, я бы не стал вносить такие методы в тело класса. Пусть основная программа разбирается с вводом/выводом так, как ей этого хочется, класс, хранящий данные, этим заниматься не обязан.
class Umar():
    def __init__(self, firstname, lastname, patronymic, age, birthday, jobs, car):
        ... # тут код инициализации класса
#эти функции можно сделать методами класса, 
# но я бы рекомендовал оставить их вне класса,
# так как способы ввода/вывода варьируются чаще, 
# чем способы хранения данных.
# красивый вывод содержимого класса
def pretty_print_umar(u: Umar):
    print('Имя:', u.firstname)
    ... # ну и так далее
# ввод данных с клавиатуры и создание по ним экземпляра класса
def input_umar() -> Umar:
    firstname = input('Введите имя [Enter - отмена]:')
    if not firstname:
        return
    # и так далее для остальных полей, а затем
    return Umar(firstname, ...)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы