Context of self

Hi
    I tried like

class First
        def initialize
                puts 'in First class'+self.inspect
        end
end
class Second < First
        def initialize
              super
              puts 'in second class'+self.inspect
        end
end

Second.new
       I got result as
in First class#<Second:0xb7f61820>
in second class#<Second:0xb7f61820>

         So is #<Second:0xb7f61820> always means from where I call the
def? I did not understand it

Thanks in advance
Sijo

···

--
Posted via http://www.ruby-forum.com/.

Sijo Kg wrote:

Second.new
I got result as
in First class#<Second:0xb7f61820>
in second class#<Second:0xb7f61820>

     So is \#&lt;Second:0xb7f61820&gt; always means from where I call the

def? I did not understand it

self is the current object (in this case the object just constructed by new).
The output of inspect does not change depending on where inspect is called
from, nor does the value of self change when you call super.
In other words: if you call self.inspect and self is an object of class
Second, you'll call Second#inspect which, unless overridden, will return
"#<Second:bla>", and if you call Second.new, self will indeed be an object
of class Second.

HTH,
Sebastian

···

--
Jabber: sepp2k@jabber.org
ICQ: 205544826