Оказывается, кроме ctypes и Cython с тех пор как я смотрел появился еще один способ, pybind11 (если не считать всякие граали).

Но во всех трех подходах надо че-то думать: в ctypes надо код в динамическую библиотеку запихнуть, а потом ее еще и загрузить; в Cython надо немного поприседать с изменением исходников и типизацией; в pybind11 — писать экспорты.

Отрыл cppyy. В нем чтобы импортировать C++ класс достаточно написать

cppyy.include("someClass.cpp")

instance = cppyy.gbl.SomeClass()

… и все. Методы и классы легко грузятся по имени. Работает это все за счет cling — интерпретатора для C++. Можно грабить корованы создавать экземпляры стандартных классов, например, vector.

Разумеется, цена этому — производительность, но питон же, да и то, не все так просто.