On Tue, 11 Nov 2003, Jp Calderone <exarkun@intarweb.us> wrote:
from twisted.application import service
class RegistryService(service.Service): def __init__(self): self.registry =3D registry.Registry()
def makeService(config): s =3D RegistryService() ... anotherS =3D SomeotherService() anotherS.setServiceParent(s) # Or s.setServiceParent(anotherS) ... return s # or return anotherS
Almost correct. The idiomatic way is class SomeOtherService # .... do something interesting here def registry(self): return self.parent.getServiceNamed('registry') def makeService(config): s = RegistryService() s.setName('registry') anotherS = SomeOtherService() m = service.MultiService() s.setServiceParent(m) anotherS.setServiceParent(m) return m The trick is to have 's' and 'anotherS' completely symmetrical, and allow them to access each other. Everything else Jp said, including the part about "globals bad, explicit references good" has my whole-hearted blessing.