Я понимаю ваш аргумент. Я тоже всегда боролся с классами за очки. По моему опыту, лучше (хотя я полагаю, возможно, не «более питоническим») выбрать более функциональный подход и написать свой API с точки зрения функций, которые принимают списки / кортежи.
Основное возражение против этого, я думаю, заключается в том, что вам, вероятно, нужен компактный способ написания простых алгебраических операций (суммы и т. Д. ), но для этого я бы предложил использовать numpy. Numpy не только поддерживает поэлементное добавление, но и дает вам эффективность там, где она может понадобиться в будущем, с матричными операциями и т. П.
В то же время, хотя вы говорите, что хотите получить чистый API, различия, которые вы добавляете в API, будут невидимы, кроме как в документации. И действительно, невидимый API не так уж полезен.
Я знаю, что это не то, о чем вы изначально просили, но я подозреваю, что это лучший дизайн в долгосрочной перспективе ( т.е. по мере роста вашей библиотеки, и вы хотите поддерживать более амбициозные преобразования точек, пакетная обработка, и т. д. , и т. д. ).