Có một well known issue khi nói đến việc sử dụng các loại giá trị .NET trong IronPython. Điều này gần đây đã khiến tôi đau đầu khi cố gắng sử dụng Python như một ngôn ngữ kịch bản được nhúng trong C#. Vấn đề có thể được tóm tắt như sau:Làm thế nào để xử lý các loại giá trị khi nhúng IronPython trong C#?
Cho một C# struct như:
struct Vector {
public float x;
public float y;
}
Và một lớp học C# như:
class Object {
public Vector position;
}
Sau đây sẽ xảy ra trong IronPython:
obj = Object()
print obj.position.x # prints ‘0’
obj.position.x = 1
print obj.position.x # still prints ‘0’
Như bài viết nêu, điều này có nghĩa là các loại giá trị hầu như không thay đổi. Tuy nhiên, đây là một vấn đề như tôi đã có kế hoạch sử dụng một thư viện vector được thực hiện như đã thấy ở trên. Có cách giải quyết nào để làm việc với các thư viện hiện có dựa trên các loại giá trị không? Sửa đổi thư viện sẽ là phương sách cuối cùng, nhưng tôi muốn tránh điều đó.
Tính năng này có hoạt động không? obj = Đối tượng() pos = Vector() pos.x = 1 obj.position = pos in obj.position.x –
Có, hoạt động. Với một nhà xây dựng thích hợp, người ta cũng có thể sử dụng 'obj.position = Vector (1,0)'. Điều này có thể được chấp nhận, mặc dù hành vi tôi mô tả trong câu hỏi của tôi vẫn sẽ gây nhầm lẫn ... – kloffy