Как отмечали другие, нет правильного способа упорядочить ваши методы. Может быть, предложение PEP было бы полезно, но все равно. Попробую подойти к вашему вопросу максимально объективно.
Сначала интерфейсы: общедоступные методы и магические функции Python определяют интерфейс класса. В большинстве случаев вы и другие разработчики хотите использовать класс, а не изменять его. Таким образом, они будут заинтересованы в интерфейсе этого класса. Помещение его первым в исходном коде позволяет избежать прокрутки деталей реализации, которые вам не нужны.
Свойства, магические методы , общедоступные методы: трудно определить лучший порядок между этими тремя, которые являются частью интерфейса класса. Как говорит @EthanFurman, очень важно придерживаться одной системы для всего проекта. Как правило, люди ожидают __init__()лучшей первой функции в классе, поэтому я использую другие магические методы прямо ниже.
Порядок чтения: в основном есть два способа рассказать историю: снизу вверх или сверху вниз. Ставя на первое место высокоуровневые функции, разработчик может получить общее представление о классе, прочитав первые пару строк. В противном случае, чтобы получить какое-либо представление о классе, пришлось бы прочитать весь класс, а у большинства разработчиков нет на это времени. Как правило, ставьте методы выше всех методов, вызываемых из их тела.
Методы класса и статические методы: обычно это подразумевается порядком чтения, описанным выше. Обычные методы могут вызывать все методы раз и, следовательно, быть первыми. Методы класса могут вызывать только методы класса и статические методы и далее. Статические методы не могут вызывать другие методы класса и идти последними.
Надеюсь это поможет. Кстати, большинство этих правил не относятся к Python. Я не знаю языка, который обеспечивает порядок методов, но если это так, это было бы довольно интересно, и, пожалуйста, прокомментируйте.