From: Matthias Georgi Date: 2002-07-09T23:43:56+09:00 Subject: Re: self_parent I think, you can easily write something like this to implement automatic references to parent objects: module CreatedObject attr_accessor :creator end class Object def create (klass, *args) klass.create_new (self, *args) end end class Class def create_new (creator, *args) obj = new *args obj.extend CreatedObject obj.creator = creator obj end end class B def child @a = create String end end b = B.new p b.child.creator Maybe it is better to protect the access to creator or even make creator a constant. It would be better, to overload new, but there is no way to get the calling object like you can get the execution stack in Kernel.caller. IMHO this would be a useful feature as it is already implemented in some way. So refering to your case of Procs you can write 'p = create Proc {..}' and define something like call_proc in Object, which calls the Proc in the objects context.