ObjectA calling ObjectB

Miki Tebeka miki.tebeka at zoran.com
Sun Dec 28 08:21:06 EST 2003


Hello Midas,
> Part 1)  Create 10 new assorted objects
> Part 2)  Link up the objects, somehow, so they can communicate with each other directly, like parts of an electrical circuit.
> Part 3)  Call the first object, which calls another, etc. like an electrical circuit.
> 
> To change the circuit, I would only change part 2 and perhaps part 3.
> 
> For example, ObjectX could have an input, for a string, and two outputs.
> If the input is "TurnOnS", it calls ObjectY.Input3
> If the input is "TurnOnT", it calls ObjectZ.Input7
> 
> ObjectX would call either, ObjectY.Input3 or ObjectZ.Input7, because it was connected that way in part 2.
> 
> I could then later change part 2 so ObjectX called either ObjectE.Input2 or ObjectF.Input9
> In other words, I could "re-wire" the circuit without changing anything in the objects.

>>> class Wired:
	def __init__(self):
		self.sisters = {}
	def register(self, msg, func, *args):
		self.sisters[msg] = (func, args)
	def process(self, msg):
		func, args = self.sisters[msg]
		func(*args)

		
>>> w1 = Wired()
>>> w2 = Wired()
>>> def p(msg):
	print msg
	
>>> w2.woof = lambda m: p("Woof: %s" % m)
>>> 
>>> w2.woof("X")
Woof: X
>>> w1.register("woof", w2.woof, "HELLO")
>>> 
>>> w1.process("woof")
Woof: HELLO
>>> 

HTH.
Miki




More information about the Python-list mailing list