python IDE and function definition

Travis Griggs travisgriggs at gmail.com
Tue Sep 24 12:59:32 EDT 2013


On Sep 23, 2013, at 8:06 AM, Chris Friesen <cbf123 at mail.usask.ca> wrote:

> 
> Hi all,
> 
> I'm looking for a python IDE (for Linux) that can look at code like this:
> 
> class ConductorManager(manager.Manager):
>    def compute_recover(self, context, instance):
>        self.compute_api.stop(context, instance, do_cast=False)
> 
> where I could highlight the "stop" and ask it to go to the definition. (Where the definition is in a different file.)
> 
> I'm running into issues where my current IDE (I'm playing with Komodo) can't seem to locate the definition, I suspect because it's too ambiguous.
> 
> The fact that python is dynamically typed seems to mean that there could potentially be multiple answers, any class with a stop() method with the right signature could presumably be plausible, right?  So rather than give up, I'd like to have my IDE suggest all possible answers.

Hi Chris,

Not sure if this reproduces what you want or not. I use PyCharm (free for free stuff, and very affordable/worthwhile otherwise) on Linux (as well as OSX/Windows). I made a new project, added two files:

provider.py:

class Provider(object):
    def stop(self):
        pass

usage.py:

class Conglomerate(object):
    def doSomething(self):
        self.provision.stop()

I then highlight 'stop', hit Ctrl-B (menu option go to>>declarations) and it brings up all the stop() definitions it could find, the Provider one on the top, click it and I jump there. Ctrl-Alt-B (menu option for goto>>implementation(s)) does nothing… UNLESS… I add this method to Conglomerate:

    def __init__(self):
        super.__init__()
        self.provision = Provider()

Then go to implementations takes me right there to the other file.

HTH


More information about the Python-list mailing list