В Ruby класс Object
имеет метод kind_of?
, который делает то, что вы хотите.Это также псевдоним is_a?
:
module M; end
class A
include M
end
class B < A; end
class C < B; end
b = B.new
b.kind_of? A #=> true
b.is_of? B #=> true
b.kind_of? C #=> false
b.kind_of? M #=> true
Кроме того, класс Class
имеет метод superclass
:
>> B.superclass
=> A
Обратите внимание, что вы можете узнать, какие методыобъект поддерживает, спрашивая его:
B.methods.sort
Вывод этой команды будет включать методы kind_of?
/ is_a?
/ superclass
.