Есть родительский класс и два дочерних,в каждом из детей переопределен баз.метод с условием вывода той или иной строки.Не работает вывод через return

Рейтинг: 0Ответов: 2Опубликовано: 13.01.2023
class Bird:
def __init__(self, name, size):
    self.name = name
    self.size = size

def describe(self, full=False):
    return f'Размер птицы {self.name} — {self.size}.'

class Parrot(Bird):
def __init__(self, name, size, color):
    super().__init__(name, size)
    self.color = color
# Переопределите метод describe().

def describe(self, full=False):
    if full:
!!! если вместо return я поставлю print то все работает, с return нет никакого вывода !!!
        return (f'Попугай {self.name} — заметная птица, '
                f'окрас её перьев — {self.color}, '
                f'а размер — {self.size}. '
                'Интересный факт: попугаи чувствуют ритм, '
                'а вовсе не бездумно двигаются под музыку. '
                'Если сменить композицию, '
                'то и темп движений птицы изменится.')
    return super().describe()

class Penguin(Bird):
def __init__(self, name, size, genus):
    super().__init__(name, size)
    self.genus = genus
# Переопределите метод describe().
def describe(self, full=False):
    if full:
!!! если вместо return я поставлю print то все работает, с return нет никакого вывода !!!
        return (f'Размер пингвина {self.name} '
                f'из рода {self.genus} — {self.size}. '
                'Интересный факт: однажды группа геологов-разведчиков '
                'похитила пингвинье яйцо, '
                'и их принялась преследовать вся стая, '
                'не пытаясь, впрочем, при этом нападать. '
                'Посовещавшись, похитители вернули птицам яйцо, '
                'и те отстали. ')
    return super().describe()

kesha = Parrot('Ара', 'средний', 'красный')
kowalski = Penguin('Королевский', 'большой', 'Aptenodytes')

kesha.describe()
kowalski.describe(True)

Этот блок кода с обучающей платформы и должен считаться правильным. Хотелось бы разобраться почему не работает вывод с return , есть ли проблема в коде !? В изучении Python я новичок и буду очень благодарна за любую подсказку или комментарий. У меня используется VSCODE версии 1.74.2 и интерпретатор Python версии 3.9.10.

Ответы

▲ -1

Все работает, return строки возвращает строку.

class Bird:
    def __init__(self, name, size):
        self.name = name
        self.size = size

    def describe(self, full=False):
        return print(f'Размер птицы {self.name} — {self.size}.')


class Parrot(Bird):
    def __init__(self, name, size, color):
        super().__init__(name, size)
        self.color = color
    
    def describe(self, full=False):
        if full:
            return print(f'Попугай {self.name} — заметная птица,'
                    f' окрас её перьев — {self.color}, а размер — {self.size}.'
                    'Интересный факт: попугаи чувствуют ритм, а вовсе не бездумно'
                    ' двигаются под музыку. Если сменить композицию, '
                    'то и темп движений птицы изменится.')
        return super().describe()


class Penguin(Bird):
    def __init__(self, name, size, genus):
        super().__init__(name, size)
        self.genus = genus
    # Переопределите метод describe().

    def describe(self, full=False):
        if full:
            return print(f'Размер пингвина {self.name} '
                    f'из рода {self.genus} — {self.size}. '
                    'Интересный факт: однажды группа геологов-разведчиков '
                    'похитила пингвинье яйцо, '
                    'и их принялась преследовать вся стая, '
                    'не пытаясь, впрочем, при этом нападать. '
                    'Посовещавшись, похитители вернули птицам яйцо, '
                    'и те отстали. ')
        return super().describe()

kesha = Parrot('Ара', 'средний', 'красный')
kowalski = Penguin('Королевский', 'большой', 'Aptenodytes')

# Вызов метода у созданных объектов.
kesha.describe()
kowalski.describe(True)
▲ -1

По-видимому, вы пытаетесь оставить комментарий к сообщению, но вместо этого вводите его в чат. Если вам нужно оставить комментарий к сообщению, вам нужно нажать на кнопку "Додати коментар" или аналогичную кнопку в вашем интерфейсе.

В приведенном вами коде создаются классы Bird, Parrot и Penguin, которые представляют различные виды птиц. Каждый класс имеет метод describe, который описывает птицу. Создаются экземпляры этих классов - попугай по имени "Ара" и пингвин по имени "Королевский".