On Thu, 07 Feb 2008 19:14:54 +1100, bambam wrote: > Second try (correction) > > I started with ths: > ------------------------------ > def open_pipe(): > pipe=PIPE() > print pipe > return pipe
What's PIPE() do? > pipe=open_pipe() (Extraneous space removed.) > pipe.parent = self.parent What's self? What's it do? What's self.parent and what does it do? > print pipe > ------------------------------ > It didn't do what I wanted: when I printed the pipe the second time it > was not the same object as the first time. How do you know? What makes you think they are different objects? > So I changed it to this: > def open_pipe(pipe): > pipe=PIPE() > print pipe > > pipe = None Again with the extraneous space. > open_pipe(pipe) This can't possibly work. What you are doing is this: (1) set the name 'pipe' to None (2) call the function open_pipe() with None as the argument (3) which reassigns the *inner* variable 'pipe' to the result of PIPE(), but doesn't do anything to the *global* variable 'pipe' (4) open_pipe() now returns None, which doesn't get used So as you can see, the global 'pipe' starts off as None, and then nothing happens to it, so it stays None. > pipe.parent = self.parent > print pipe > > It still doesn't do what I wanted: I can't assign the parent property > because pipe type is None. > > I'm not sure enough of what I am doing to tell if I have another error > in my > code causing the problem. Is either of these examples supposed to work > as shown? Is it clear that either example is obviously wrong? Your first attempt was almost certainly the correct way to try to do what you want. I suspect that your function PIPE() is broken. -- Steven -- http://mail.python.org/mailman/listinfo/python-list