Добрый день! Я новичок в питоне (да и в других языках не особо профи), но как я понял в питоне нет перегрузки методов. Подскажите как быть, если хочется сделать класс в питоне, который мог бы инициализироваться разными наборами данных? Например класс прямоугольника можно задать как rect = Rectangle(x, y, width, height) или как rect = Rectangle(x1, y1, x2, y2). Я вижу тут три варианта. Первый - внутри класса эти четыре параметра называются как-то невразумительно, типа arg1, arg2, arg3, arg4 и к ним добавляется пятый параметр например булева типа, который будет выбирать один из двух вариантов описания прямоугольника (можно даже ему значение по умолчанию поставить. Потом из этих параметров создаются в результате ветвления параметры экземпляра класса с нормальными названиями. Другой вариант сделать шесть (или даже восемь) параметров у класса инит с вразумительными названиями переменных и значениями по умолчанию None. А пользователь уже конкретно будет вписывать поименно параметры которые у него есть по факту. Вроде rect = Rectangle(x=10, y=20, width=100, height=50). Третий вариант - писать несколько разных псевдоинициализирующих функций с разными наборами. Реальная инициализация экземпляра класса rect = Rectangle(), а далее rect.change_place_and_size_1(x, y, width, height) или rect.change_place_and_size_2(x1, y1, x2, y2). Опыта нет, а найти ответ в интернете оказалось не так просто. Может есть еще какой-то способ для таких случаев - более специфический? Если нет, то какая практика более предпочтительная на Ваш взгляд?