In Python, is it possible to get the object, say Foo, that contains another object, Bar, from within Bar itself? Here is an example of what I mean
class Foo(object): def __init__(self): self.bar = Bar() self.text = "Hello World" class Bar(object): def __init__(self): self.newText = foo.text #This is what I want to do, #access the properties of the container object foo = Foo()
Is this possible? Thanks!
Pass a reference to the Bar object, like so:
class Foo(object): def __init__(self): self.text = "Hello World" # has to be created first, so Bar.__init__ can reference it self.bar = Bar(self) class Bar(object): def __init__(self, parent): self.parent = parent self.newText = parent.text foo = Foo()
Edit: as pointed out by @thomleo, this can cause problems with garbage collection. The suggested solution is laid out at http://eli.thegreenplace.net/2009/06/12/safely-using-destructors-in-python/ and looks like
import weakref class Foo(object): def __init__(self): self.text = "Hello World" self.bar = Bar(self) class Bar(object): def __init__(self, parent): self.parent = weakref.ref(parent) # <= garbage-collector safe! self.newText = parent.text foo = Foo()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With