playORM может сделать это для вас, используя S-SQL (масштабируемый SQL), который просто добавляет разделение, так что вы можете делать объединения внутри разделов.
Сообщение об ошибке, которое вы видите, означает, что вы ожидаете, что объект p4 будет иметь метод .dist, но объект p4 является строковым объектом. Я думаю, что вас смущает то, что p1, p2 и p3 являются объектами Point (поэтому у них есть метод .dist), но когда вы выполняете метод .midpt для создания переменной p4, метод возвращает строку. Возвращает "(1.5,2.0)" против точки (1.5,2.0). Поэтому, если вы хотите, чтобы ваш код работал, вы должны изменить переменную calc в методе .midpt на что-то вроде этого:
calc = Point ((x1 + x2) / 2), ((y1 + y2) / 2))