fire a dev inside a class from a dialog class



  • On 30/10/2015 at 17:12, xxxxxxxx wrote:

    Hi all,

    how can I start a def inside a class started from a def inside dialog class. I get a unbound python error.

    thanks in advance.

    some exmaple pseudocode

      
    class dialog() :   
        def maindialog() :   
            worker.dosomething(dialogid=5) #error raised herer   
      
    class worker() :   
        dosomething(dialogid) :   
            result = dialogid+10   
            return result
    


  • On 30/10/2015 at 17:30, xxxxxxxx wrote:

    You are calling dosomething() with the class name alone, instead of with an instance of the class.

    If that is really intended, you need to declare the method as @staticmethod.

      
    import c4d   
      
    class dialog() :   
        @staticmethod   
        def maindialog() :   
            print worker.dosomething(dialogid=5)   
      
    class worker() :   
        @staticmethod   
        def dosomething(dialogid) :   
            result = dialogid+10   
            return result   
           
    def main() :   
        dialog.maindialog()   
    

    Prints "15".



  • On 31/10/2015 at 04:20, xxxxxxxx wrote:

    thanks. and how do i call it with an instance of that class ? for your info I am winging it here ;-)



  • On 31/10/2015 at 07:26, xxxxxxxx wrote:

    A method that is instance bound needs a parameter "self" so it can be called through
    instance.method(parameters)
    Then you can create a variable of the newly defined class, and call the methods on it:

      
    import c4d   
      
    class dialog() :   
        def maindialog(self) :   
            x = worker()   
            print x.dosomething(dialogid=5)   
      
    class worker() :   
        def dosomething(self, dialogid) :   
            result = dialogid+10   
            return result   
      
    def main() :   
        dlg = dialog()   
        dlg.maindialog()   
    

    Nevertheless: These are totally basic Python concepts. If you struggle with these already, you should perhaps take a Python tutorial and familiarize yourself with Python and OOP concepts. I don't know whether you have any programming knowledge in some other language, but here is a tutorial that may be of help:

    http://www.bogotobogo.com/python/python_introduction.php
    (There are tons of others on the web...)

    "Winging it" will probably not do you any good if you need to ask for every little bit of information; this would make for a very frustrating experience.


Log in to reply