''' Таким образом, разница между __str__ и __repr__ заключается в целях использования. __str__ предназначен для представления объекта в читаемой форме, а __repr__ предназначен для представления объекта в точном и воспроизводимом виде. ''' class Lion: def __init__(self, name): self.name = name '''Как видят объект разработчики''' def __repr__(self) -> str: return f'The name Lion - f{self.name}' '''Как видят объект пользователи. Функции print, str''' def __str__(self) -> str: return f'Lion - f{self.name}' class Person: def __init__(self, name, surname, gender='male'): self.name = name self.surname = surname if gender not in ['male', 'female']: print("Не знаю, что вы имели в виду? Пусть это будет мальчик!") self.gender = 'male' else: self.gender = gender def __str__(self): if self.gender == 'male': return f"Гражданин {self.surname} {self.name}" else: return def main(): lion = Lion('Simba') print(lion) # __str__ print(lion) # __str__ if __name__ == '__main__': main()