Как вывести значение при принте объекта класса

class Any:
    """
    Типа код
    """


if __name__ == "__main__":
    a = Any()
    print(a) #>>> <__main__.Any object at 0x00000194E371EFD0>

Мне нужно чтобы он выводил значение строку или число к примеру. Есть ли какой-нибудь магический метод?


Ответы (1 шт):

Автор решения: Danis

Существует магический метод __str__, который должен возвращать строку

class Any:
    """
    Типа код
    """
    def __str__(self):
        return "Типа текст"

print(Any()) #Типа текст

но если положить экземпляр в список то метод __str__ работать не будет.

class Any:
    """
    Типа код
    """
    def __str__(self):
        return "Типа текст"

arr = [Any()]
print(arr) #[<__main__.Any object at 0xedc0b580>]

Это можно исправить реализовав метод __repr__.

class Any:
    """
    Типа код
    """
    def __str__(self):
        return "Типа текст"
        
    __repr__ = __str__

arr = [Any()]
print(arr) #[Типа текст]
→ Ссылка