[Python.NET] Error in calling Python class method from C#

Stefan Schukat SSchukat at dspace.de
Wed May 2 05:57:15 EDT 2018


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 at 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 at 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 at gmail.com<mailto:techieth at gmail.com>> wrote:
Iron Python is having way to do the same.Please check below link.
https://stackoverflow.com/questions/579272/instantiating-a-python-class-in-c-sharp





On Mon, Apr 30, 2018 at 10:36 AM, techi eth <techieth at gmail.com<mailto:techieth at 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 at gmail.com<mailto:denis.akhiyarov at gmail.com>> wrote:
You may get more feedback on stackoverflow than on this mailing list for questions like this:

https://stackoverflow.com/questions/tagged/python.net?sort=newest&pageSize=50

On Fri, Apr 27, 2018 at 3:54 AM, techi eth <techieth at gmail.com<mailto:techieth at 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 at gmail.com<mailto:techieth at 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 at dspace.de<mailto:SSchukat at dspace.de>> wrote:
Hello,

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

    Stefan

From: PythonDotNet [mailto:pythondotnet-bounces+sschukat<mailto:pythondotnet-bounces%2Bsschukat>=dspace.de at python.org<mailto:dspace.de at python.org>] On Behalf Of techi eth
Sent: Wednesday, April 25, 2018 2:38 PM
To: A list for users and developers of Python for .NET <pythondotnet at python.org<mailto:pythondotnet at 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 at python.org<mailto:PythonDotNet at python.org>
https://mail.python.org/mailman/listinfo/pythondotnet



_________________________________________________
Python.NET mailing list - PythonDotNet at python.org<mailto:PythonDotNet at python.org>
https://mail.python.org/mailman/listinfo/pythondotnet


_________________________________________________
Python.NET mailing list - PythonDotNet at python.org<mailto:PythonDotNet at python.org>
https://mail.python.org/mailman/listinfo/pythondotnet



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20180502/60fc8f0f/attachment-0001.html>


More information about the PythonDotNet mailing list