https://medium.com/@gantasofttraining/what-is-the-difference-between-str-and-repr-in-python-b28cf5141c6c