object knows which object called it?
R. David Murray
rdmurray at bitdance.com
Mon Apr 6 18:53:40 CEST 2009
Reckoner <reckoner at gmail.com> wrote:
> I have the following problem: I have two objects, say, A and B, which
> are both legitimate stand-alone objects with lives of their own.
> A contains B as a property, so I often do
> the problem is that some functions inside of B actually need A
> (remember I said they were both standalone objects), so I have to
> often do:
> Which is kind of awkward.
> Is there some way that B.foo_func() could somehow know that it was
> called as a property of A in this way?
> Note that I'm looking for the calling object and NOT the calling
You could probably do this by creating a custom __getattr__ method (or
maybe even just a property) on A that would recognize B as an object and
return it wrapped in a class that would pick up the __getattr__ call on B
and translate it into a real call on B passing A as the first argument.
But that kind of magic is not considered good Python practice ("explicit
is better than implicit"). And it would be quite inefficient :)
I think the OO way to do this is to provide a method on A that does the
Or maybe you could look at generic methods, which provide a way
to do multiple dispatch.
R. David Murray http://www.bitdance.com
More information about the Python-list