>> class << self #or class << A >> >> @singleton_variable # <- Can this be used/called elsewhere ? > > Like all instance variables, it belongs to whatever object is 'self' > at the point where the instance variable appears, and multiple > references to the same instance variable in different contexts where > self is the same, will be references to the same instance variable. But here self is #<Class:A>. Here it really the same context/self as for class instance variables (A). > I don't find the term "singleton variable" very helpful. All the > variables in your example are just instance variables. Calling them > "class instance variables" is sometimes useful, since there are So, let's take an another example. After every "puts self" I put the result. class A puts "Inside class" puts self # A -> This is the self that our instance variable would be linked to, making a "class instance variable" def meth puts "Inside method" puts self # #<A:0x2ebd140> end def self.methc puts "Inside class method" puts self # A end class << self puts "Inside singleton" puts self # #<Class:A> -> and this is the self that our instance variable would be linked to... def meths puts "Inside singleton method" puts self # A end end end a = A.new #<A:0x2ebd140> With a being #<A:0x2ebd140>, the results are : - A - #<A:0x2ebd140> - #<Class:A> So, when defining what's usually called a "class instance variable", the self is "A". For what I call a "singleton variable", but that you called a "class instance variable", the self is "#<Class:A>". To me, there's a difference, but I don't know what that "#<Class:A>" is. It's the same thing with a self.method. Can someone tell me how to use those @my_variable and self.method in the following class : class A class << self @my_variable def self.my_method end end # This is where I'd like to use it end # Or we can use it from here on a new instance or an the class itself maybe ? I'll sleep over it... -- Posted via http://www.ruby-forum.com/.