Назад к задачам
Junior — Senior
7

Исследование методов, декораторов и наследования в Python

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В этом фрагменте кода показано, как устроены разные виды методов в классе, как применяется свойство и как реализовано наследование. Обратите внимание на:

  • обычный метод get_full_name, который формирует полное имя студента;
  • статический метод get_greeting, не зависящий от состояния объекта;
  • метод класса get_default_course, работающий с атрибутом класса;
  • свойство is_lucky, которое вычисляет логическое значение на основе длины имени и возраста;
  • наследника StudentPlus, переопределяющий атрибут default_course и добавляющий новый метод get_full_upper_case_name.

Опишите, какие именно методы и декораторы задействованы, как построена цепочка наследования и какие результаты возвращаются при вызове каждого из методов.

class Student:
    default_course = 'Python Developer'

    def __init__(self, name, surname, age):
        self.name = name
        self.surname = surname
        self.age = age

    def get_full_name(self):
        return f'{self.name} {self.surname}'

    @staticmethod
    def get_greeting():
        return 'Привет, студент!'

    @classmethod
    def get_default_course(cls):
        return cls.default_course

    @property
    def is_lucky(self):
        return len(self.name + self.surname) == self.age


class StudentPlus(Student):
    default_course = 'Python Developer Plus'

    def get_full_upper_case_name(self):
        return f'{self.name} {self.surname}'.upper()