Snowlav
Snowlav

Reputation: 465

Python and nesting classes for structure

I am having a bit of trouble with nesting classes in python.

Mind you my code below is a simplified example showing what I want to do, but basically I want to use nested classes to make my code more structured and make sure I don't run into name clashes for certain functions.

See here my example code:

class Chrome:

    def __init__(self, url='http://localhost:4723/wd/hub'):

        # Capabilities
        capabilities    = Capabilities.chrome()

        # Start session
        self.driver     = webdriver.Remote(url, capabilities)


    def get_url(self, url):

        # Go to URL
        self.driver.get(url)


    class actions:

        @staticmethod
        def browse_url(url):

            # Go to url
            Chrome.get_url(url)


if __name__ == '__main__':

    browser = Chrome()

    browser.actions.browse_url('https://www.google.com')

The goal as you can see in if __name__ == '__main__' is to be able to start a browser instance, and then call functions in a structured way.

However I have no clue on how to correctly achieve the browser.actions.browse_url('https://www.google.com') concept.

How is this done correctly ?

Upvotes: 0

Views: 62

Answers (1)

Moses Koledoye
Moses Koledoye

Reputation: 78546

You should call get_url from an instance of Chrome and not the class itself, since it's an instance method and not a static one:

...
@staticmethod
def browse_url(url):
     Chrome().get_url(url) 
...

if __name__ == '__main__':
    Chrome.actions.browse_url('https://www.google.com')

Upvotes: 1

Related Questions