Home > Mobile >  Object initialization in Pythonnet
Object initialization in Pythonnet

Time:12-02

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 Pythonnet).

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 Pythonnet 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.

CodePudding user response:

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

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

CodePudding user response:

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);
    
  • Related