How can I find out what the super class is of an object, Say if a class
extends Hash. I need to be able to find a string representation of the
super class (‘Hash’)… is_a? won’t work as that requires an actual
module or class… I need a string representation.
any ideas? thanks…
Hi –
On Tue, 16 Jan 2007, Aaron S. wrote:
How can I find out what the super class is of an object, Say if a class
extends Hash. I need to be able to find a string representation of the
super class (‘Hash’)… is_a? won’t work as that requires an actual
module or class…
is_a? won’t report an inheritance relationship in any case:
class D < C; end
D.is_a?© # false (unless C is Object maybe…)
I need a string representation.
any ideas? thanks…
superclass.name will give it to you as a string.
David
yes, is_a? does report inheritance. consider this…
class C
end
class D < C
end
t = D.new
puts t.is_a?©
thanks.
do you know of anyway to do this on an instance of an object, not on the
class method??
thanks…
Aaron S. wrote:
How can I find out what the super class is of an object, Say if a class
extends Hash. I need to be able to find a string representation of the
super class (‘Hash’)… is_a? won’t work as that requires an actual
module or class… I need a string representation.
any ideas? thanks.
Will Module#ancestors work?
irb(main):001:0> class A
irb(main):002:1> end
=> nil
irb(main):003:0> class B < A
irb(main):004:1> end
=> nil
irb(main):005:0> A.ancestors
=> [A, Object, Kernel]
irb(main):006:0> B.ancestors
=> [B, A, Object, Kernel]
-Justin
irb(main):013:0> a=10
=> 10
irb(main):014:0> a.class.ancestors
=> [Fixnum, Integer, Precision, Numeric, Comparable, Object, Kernel]
irb(main):015:0> a.class.superclass.name
=> “Integer”
irb(main):016:0>
Hi –
On Tue, 16 Jan 2007, aaron smith wrote:
module or class…
class D < C
end
t = D.new
puts t.is_a?©
I interpreted your question as meaning that, given a class, you wanted
a string representation of its superclass – and my point was that
is_a? isn’t relevant in that situation, because D.is_a?© is false.
(It’s actually not relevant anyway, since it’s a boolean query; it
returns true or false, which isn’t what you’re looking for.)
If you want to go from any object to its class’s superclass in string
form, you would do:
obj.class.superclass.name
David