[Twisted-Python] "Old style" classes in Twisted and inheritance

Atilla theatilla at gmail.com
Tue Nov 13 09:07:21 EST 2007

I hope this is the correct place for this question.

I was trying to create a little customized task that sends a (ping)
message to the clients every X seconds. Because I needed some extra
bookkeeping, I implemented it as a class instance with a __call__
method, that is passed to the LoopingCall.

However, I also wanted to automatically start the task on init, so I
thought - it makes a lot of sense to simply Inherit it, call its
constructor and pass self as the parameter. It was then I realized
that the classes in twisted are old-style, when my super() call didn't

Is there any practicular reason for that? Am I wrong to try inherit
the Looping Call ? Basically my code looks like :

class SillyPinger(object):
        def __init__(self, factory):
            self.factory = factory
            self.pingTargets = {}

            pingTask = task.LoopingCall(self)

        def __call__(self):
            # do stuff

while I'd like to be doing:

class SillyPinger(task.LoopingCall):
        def __init__(self, factory):
            super(SillyPinger, self).__init__(self)

            self.factory = factory
            self.pingTargets = {}

            self.start(5.0) # get value from .ini here

Should I just switch to calling the LoopingCall constructor in the old
way? I'm not sure I'd like to do that, even if only for consistency

More information about the Twisted-Python mailing list