По поводу OOP и принадлежности к классам.
Писал я недавно алгоритм кластеризации (обыкновенный k-means).
Писал его вроде как для обычных матриц, а потом раз - и выяснилось, что без переделки кода алгоритм работает со всем, что умеет работать с Table интерфейсом. Датафреймы, csv файлы и так далее.