Одна из лучших особенностей языка Python заключается в том, что методы класса могут возвращать множественные значения. Взгляните на следующий пример:

class Square:
     @staticmethod
    def get_squares(a, b):
            return a*a, b*b
print(Square.get_squares(3, 5)) #(9, 25)

До этого момента мы выводили атрибуты при помощи метода print(). Посмотрим, что случится, если мы выведем объект класса.

class Car:
    # создание методов класса
    def start(self):
        print ("Двигатель заведен")

car_a = Car()  
print(car_a) #<__main__.Car object at 0x002C5A70>

Выдача показывает локацию памяти, где хранится наш объект. Каждый объект Python по умолчанию содержит метод __str__ . Когда вы используете объект в качестве строки, вызывается метод __str__ , который по умолчанию выводит локацию памяти объекта. Однако, вы также можете предоставить собственное определение метода __str__ . Например, как в следующем примере:

# создание класса Car
class Car:
    # создание методов класса
    def __str__(self):
        return "Car class Object"
     def start(self):
        print ("Двигатель заведен")
 car_a = Car()  
print(car_a) #Car class Object