Как дополнить исходную строку используя конкатенацию?
Выведите на печать содержимое объекта класса Quest. Для этого переопределите метод str в классе Quest. По умолчанию он должен возвращать строку
'Цель квеста {название_квеста} — {цель_квеста}.'
При определённых условиях строка должна выглядеть иначе:
если квест уже завершён —
'Цель квеста {название_квеста} — {цель_квеста}. Квест завершён.'
если квест уже принят на исполнение —
'Цель квеста {название_квеста} — {цель_квеста}. Квест выполняется.'
import datetime as dt
import time
class Quest:
def __init__(self, name, description, goal):
self.name = name
self.description = description
self.goal = goal
self.start_time = None
self.end_time = None
def accept_quest(self):
if self.end_time:
return 'С этим испытанием вы уже справились.'
self.start_time = dt.datetime.now()
return f'Начало квеста "{self.name}" положено.'
def pass_quest(self):
if not self.start_time:
return 'Нельзя завершить то, что не имеет начала!'
self.end_time = dt.datetime.now()
completion_time = self.end_time - self.start_time
return (f'Квест "{self.name}" окончен.'
f' Время выполнения квеста {completion_time}')
# Напишите код метода __str__.
def __str__(self):
# если квест уже завершён
if self.goal == self.end_time:
return(f'Цель квеста {self.name} — {self.goal}. Квест завершён.')
# если квест уже принят на исполнение
if self.goal == self.start_time:
return (f'Цель квеста {self.name} — {self.goal}. Квест выполняется.')
# По умолчанию он должен возвращать строку
return (f'Цель квеста {self.name} - {self.goal}')
quest_name = 'Сбор пиксельники'
quest_goal = 'Соберите 12 ягод пиксельники.'
quest_description = '''
В древнем лесу Кодоборье растёт ягода "пиксельника".
Она нужна для приготовления целебных снадобий.
Соберите 12 ягод пиксельники.'''
new_quest = Quest(quest_name, quest_description, quest_goal)
print(new_quest.pass_quest())
print(new_quest.accept_quest())
time.sleep(3)
print(new_quest.pass_quest())
print(new_quest.accept_quest())
# Печатаем объекта класса Quest:
print(new_quest)
Подскажите, как мне реализовать конкатенацию для метода str. Перепробовал все возможные варианты. Есть представление как это должно быть реализовано, но пока ни нашел ни чего подходящего.
Источник: Stack Overflow на русском