Hello,

 

as I mentioned in my earlier mail the “self” was missing for the instance method. The rest looks fine.

 

  Stefan

 

 

From: PythonDotNet [mailto:pythondotnet-bounces+sschukat=dspace.de@python.org] On Behalf Of techi eth
Sent: Monday, April 30, 2018 10:48 AM
To: A list for users and developers of Python for .NET <pythondotnet@python.org>
Subject: Re: [Python.NET] Error in calling Python class method from C#

 

I have got success on doing. I just  need to get review to ensure right. Please find below code snapshot.

 

Class.py

 

def test():

 print "Test called"

 return 1

 

class ClassTest:

  def __init__(self)

 

  def Initalize(self):

   print "Initalize called"

   return 1

 

  @staticmethod

  def Execute():

   print "Execute called"

   return 1

-------------------------------------------------------------------------------------

Programme.cs   

 PythonEngine.Initialize();

            using (Py.GIL())

            {

                //Creating module object

                PyObject testClassModule = PythonEngine.ImportModule("Class");

               

                //Calling module method

                PyObject result = testClassModule.InvokeMethod("test");

                Console.WriteLine("Test method result = {0}", result.ToString());

 

                Dynamic classTest = testClassModule.GetAttr("ClassTest");

                               Dynamic tmp = classTest();

                tmp.Initalize();

                tmp.Execute();                                                                                            

           }

            PythonEngine.Shutdown();

            return 0;

        }

 

On Mon, Apr 30, 2018 at 11:35 AM, techi eth <techieth@gmail.com> wrote:

Iron Python is having way to do the same.Please check below link.

 

 

 

 

 

On Mon, Apr 30, 2018 at 10:36 AM, techi eth <techieth@gmail.com> wrote:

Thanks for link, I have been through most of pages but not able to found same query.

I am also not sure is this possible with Pyhton For .NET. Could you please give me below query answer.

 

Can i create python class instance in C# programme ????

 

On Mon, Apr 30, 2018 at 8:34 AM, Denis Akhiyarov <denis.akhiyarov@gmail.com> wrote:

You may get more feedback on stackoverflow than on this mailing list for questions like this:

 

 

On Fri, Apr 27, 2018 at 3:54 AM, techi eth <techieth@gmail.com> wrote:

Any input on raised query. I think i am missing something very simple but not able to catch.

 

Thanks

 

On Thu, Apr 26, 2018 at 5:47 PM, techi eth <techieth@gmail.com> wrote:

Yes,It will work with this way but i need to create multiple instance of same class.If you see other function (@Execute() ) with static was working.

Please give me hint of doing without static.

 

Thanks

 

On Thu, Apr 26, 2018 at 4:54 PM, Stefan Schukat <SSchukat@dspace.de> wrote:

Hello,

 

you missed either @staticmethod decorator or the self argument for the Initialize method.

 

    Stefan

 

From: PythonDotNet [mailto:pythondotnet-bounces+sschukat=dspace.de@python.org] On Behalf Of techi eth
Se
nt: Wednesday, April 25, 2018 2:38 PM
To: A list for users and developers of Python for .NET <pythondotnet@python.org>
Subject: [Python.NET] Error in calling Python class method from C#

 

Hi,

 

I am facing issue while calling python class function in C# programme. Can anyone give me hint what is wrong in below programme.While running I am getting error in invoking Initialize() function of class.

 

Python module <Class.py> :

def test():

 print "Test called"

 return 1

 

class ClassTest:

  def __init__(self)

 

  def Initialize ():

   print " Initialize called"

   return 1

 

  @staticmethod

  def Execute():

   print "Execute called"

   return 1

 

C# Console Programme code snapshot :

PythonEngine.Initialize();

            using (Py.GIL())

            {

                PyObject testClassModule = PythonEngine.ImportModule("Class");

              

                //Calling module method

                PyObject result = testClassModule.InvokeMethod("test");

                Console.WriteLine("Test method result = {0}", result.ToString());

 

                PyObject classTest = testClassModule.GetAttr("ClassTest");

                classTest.InvokeMethod("Initialize "); -----------------------------> Error

                classTest.InvokeMethod("Execute");

           }

            PythonEngine.Shutdown();

 

 

 

_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
https://mail.python.org/mailman/listinfo/pythondotnet

 

 


_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
https://mail.python.org/mailman/listinfo/pythondotnet

 


_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
https://mail.python.org/mailman/listinfo/pythondotnet