Retrieving class name in a class method?

P

petermichaux

Hi,

I'd like to use the name of my class in a class method. I've tried
self.class.to_s but that outputs "Class". I've attached my code below

Thanks,
Peter


class Thing

def self.my_name
# I don't want to reference instance method my_name
self.class.to_s
end

def self.my_name2
self.new.my_name
end

def my_name
self.class.to_s
end

end

# I want these three lines to output "Thing"
puts Thing.my_name #outputs "Class"
puts Thing.my_name2 #outputs "Thing"
puts Thing.new.my_name #outputs "Thing"
 
S

Sean O'Halpin

I'd like to use the name of my class in a class method. I've tried
self.class.to_s but that outputs "Class". I've attached my code below
Just use self.to_s or name in a class method, e.g.

class Thing
def self.my_name
self.to_s
end
def self.my_name2
name
end
end

t =3D Thing.new
puts Thing.name
puts Thing.my_name
puts Thing.my_name2
__END__
Thing
Thing
Thing

Regards,

Sean
 
B

Brian Schröder

Hi,

I'd like to use the name of my class in a class method. I've tried
self.class.to_s but that outputs "Class". I've attached my code below

Thanks,
Peter


class Thing

def self.my_name
# I don't want to reference instance method my_name
self.class.to_s
end

def self.my_name2
self.new.my_name
end

def my_name
self.class.to_s
end

end

# I want these three lines to output "Thing"
puts Thing.my_name #outputs "Class"
puts Thing.my_name2 #outputs "Thing"
puts Thing.new.my_name #outputs "Thing"

That is because the class of a class is class.

$ irb --simple-promptA
=3D> nilClass
=3D> nil=3D> A

cheers,

Brian
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top