if I have some code like this:
def handler(self):
self.run(self.connect)
def connect(self, param):
#do stuff...
def run(self, connector):
self.runner
Passing a function as a parameter does not call it:
In [105]: def f1(f):
.....: print 'hi'
.....: return f
.....:
In [106]: def f2():
.....: print 'hello'
.....:
In [107]: f1(f2)
hi
Out[107]: <function __main__.f2>
of course, if you pass a function call to another function, what you're passing is the return value:
In [108]: f1(f2())
hello
hi
Note the order in which they are called: f2 is called first, and its return value is passed to f1.
None of the code in your question actually calls connect(), so the function is never invoked. All that self.run(self.connect) does is make self.runner a synonym for self.connect.