Ответы пользователя по тегу ООП
  • Как улучшить этот код(в плане ооп)?

    MinTnt
    @MinTnt
    Хоть и не мне это говорить. Но ООП идёт к минимализации повторяющихся строк, что выполняют одну и ту же работу.

    К примеру. Здесь повторяется одна и та же строка.
    self.serialPort.write( bytes(string, "ascii") )
    def writeln(self, string):
            """ Write a line to serial poart """
            self.serialPort.write( bytes(string, "ascii"))
            self.putCursorOnNewLine()
        
    
        def write(self, string):
            """write a string to serial port """
            self.serialPort.write( bytes(string, "ascii") )

    Так что всё можно сократить до одной функции, просто добавив ещё одной входной параметр
    сократить до одной функции
    def write(self, string, nextline=False):
            """write a string to serial port """
            self.serialPort.write( bytes(string, "ascii") )
            if nextline:
                self.putCursorOnNewLine()
    
    #И далее вызывать, функцию write('text') как и раньше, а функцию writeln - как write('text', True)
    Ответ написан
    1 комментарий
  • Сложить и вывести результат?

    MinTnt
    @MinTnt
    Ну что сказать... Даже не знаю с чего начать... С того, что вы каждый раз перезаписываете одну и ту же переменную, начиная так сказать с нуля или с...

    Ладно, решения есть два.
    1) Задавать нужные данные не через перезапись переменной и вызовом класса, а посредством bank_client.age =, bank_client.full_name =,
    т.е.
    bank_client = Client()
    bank_client.full_name = input('Введите ваше ФИО: ')
    bank_client.age = int(input('Введите ваш возраст: '))
    bank_client.age_conditions()
    print(bank_client.points)
    bank_client.gender = input('Введите ваш пол (М/Ж): ')
    bank_client.gender_conditions()
    print(bank_client.points)
    bank_client.profit = int(input('Введите ваш ежемесячный доход: '))
    bank_client.profit_conditions()
    print(bank_client.points)
    bank_client.credit_history = input('Имеется ли у вас кредитная история: ')
    bank_client.credit_history_conditions()
    print(bank_client.points)
    bank_client.credit_amount = int(input('Сумма кредита: '))
    bank_client.credit_amount_conditions()
    print(bank_client.points)
    bank_client.credit_result()

    2) В каждом следующем перезаписывании переменной, добавлять полученные из предыдущего вызова данные. Ну или же к примеру просто передавать каждой следующей функции points. Но как по мне, это лишняя работа
    bank_client = Client()
    bank_client = Client(full_name = input('Введите ваше ФИО: '))
    bank_client = Client(age = int(input('Введите ваш возраст: ')), full_name=bank_client.full_name)
    bank_client.age_conditions()
    print(bank_client.points)
    bank_client = Client(gender = input('Введите ваш пол (М/Ж): '), full_name=bank_client.full_name, age=bank_client.age, points=bank_client.points)
    bank_client.gender_conditions()
    print(bank_client.points)
    bank_client = Client(profit = int(input('Введите ваш ежемесячный доход: ')),full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, points=bank_client.points)
    bank_client.profit_conditions()
    print(bank_client.points)
    bank_client = Client(credit_history = input('Имеется ли у вас кредитная история: '), full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, profit = bank_client.profit, points=bank_client.points)
    bank_client.credit_history_conditions()
    print(bank_client.points)
    bank_client = Client(credit_amount = int(input('Сумма кредита: ')), full_name=bank_client.full_name, age=bank_client.age, gender = bank_client.gender, profit = bank_client.profit, credit_history=bank_client.credit_history, points=bank_client.points)
    bank_client.credit_amount_conditions()
    print(bank_client.points)
    bank_client.credit_result()


    P.s. Хоть и видно что первый варянт решения лучше. Но просто я решил, что раз автор хочет через перезапись переменной, не буду уж ему отказывать.
    Ответ написан
    Комментировать