How do I deter开发者_StackOverflow社区mine the current open class in Ruby?
Inside the class itself:
class_name = self.class
On an initialized object named obj:
class_name = obj.class
Inside of a class definition body, self refers to the class itself. Module#name will tell you the name of the class/module, but only if it actually has one. (In Ruby, there is no such thing as a "class name". Classes are simply objects just like any other which get assigned to variables just like any other. It's just that if you happen to assign a class object to a constant, then the name method will return the name of that constant.)
Example:
puts class Foo
  name
end
# Foo
But:
bar = Class.new
bar.name # => nil
BAR = bar
bar.name #=> 'BAR'
if you have obj = SomeClass.new you get the class with obj.class
If you're looking to compare via the class name (string):
class Foo
  def my_class_name_is
    self.class.name
  end
end
Foo.new.my_class_name_is
=> "Foo" 
In my case, the name method was overwrote, I find to_s give me this same result
class Foo
 puts self.name
 puts self.to_s
end
#=> Foo
#=> Foo
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论