Context of self


#1

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


#2

Sijo Kg wrote:

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

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