简体   繁体   中英

Object initialization in Pythonnet

Let's assume I've the following C# class:

public class Test
{
    public double X;
    public double Y;
}

I want to use the above C# Test class from IronPython and as well from CPython (using Pytho.net ).

Using IronPython 2.7 I was able to generate an object and initializes the fields using object initialization , see the following Python code:

obj = Test(X = 1.0, Y = 2.0)

See as well the following question Object initialization in IronPython

Using CPython 3.9.7 and Pytho.net 3.01 the above code returns the following error:

TypeError: No method matches given arguments for Test..ctor: ()

As workaround I can use the following Python code:

obj = Test()
obj.X = 1.0
obj.Y = 2.0

But I would like to use object initialization .

Not sure if I get your question, but try this:

Test test = New Test();
/* or */ var test = New Test();
/* then */ test.x = whatever;

You can do this in two ways in C#:

  1. Object Initializer approach:
     var obj = new Test { X = 1.0, Y = 2.0 };
  2. The constructor approach. For this approach you must add a constructor to the class:
     public class Test { public double X; public double Y; public Text( double x, double y) { X = x; Y = y; } }
    Then you can create the object with:
     var obj = new Test(1.0, 2.0);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM