Существует хорошо известная проблема , когда речь идет об использовании типов значений .NET в IronPython . Это недавно вызвало у меня головную боль при попытке использовать Python как встроенный язык сценариев в C #. Проблема может быть подытожена следующим образом:
Учитывая структуру C #, такую как:
struct Vector {
public float x;
public float y;
}
И класс C #, такой как:
class Object {
public Vector position;
}
В IronPython произойдет следующее:
obj = Object()
print obj.position.x # prints ‘0’
obj.position.x = 1
print obj.position.x # still prints ‘0’
Как говорится в статье, это означает, что типы значений в основном неизменяемы. Однако это проблема, так как я планировал использовать векторную библиотеку, которая реализована, как показано выше. Существуют ли обходные пути для работы с существующими библиотеками, основанными на типах значений? Модификация библиотеки была бы последним средством, но я бы предпочел этого избежать.