Introspección de tipos

En el ejemplo inferior se muestra un método alternativo en Ruby que puede utilizarse para definir clases (y que lleva a un resultado idéntico): También se puede preguntar directamente por la clase de cualquier objeto, y "compararlos" (el siguiente código asume haber ejecutado el código superior): En Objective-C, por ejemplo, ambos objetos genéricos Object y NSObject (en Cocoa/OpenStep) proporcionan el método isMemberOfClass: que devuelve true si el argumento al método es una instancia de la clase especificada.Ahora, en el método desex puede escribirse Ahora, cuando se llama a desex con un objeto genérico (un id), la función se comportará de forma correcta dependiendo del tipo de objeto genérico.El lenguaje include un operador is, para determinar si un objeto es o desciende de una clase determinada, así como un operador as, que proporciona typecast con comprobación de tipos, y varios métodos en TObject.Como ejemplo, si se desea determinar la clase actual de un objeto (más que si un objeto pertenece a una clase en concreto), pueden utilizarse los métodos Object.getClass() y Class.getName(): Se puede lograr introspección con las funciones ref e isa Perl.Podemos realizar introspección sobre las clases siguientes y sus instancias correspondientes: utilizando: Se puede lograr una introspección mucho mayor en Perl utilizando el sistema de objetos Moose[2]​ y la Class::MOP protocolo meta-object,[3]​ por ejemplo de esta forma se puede comprobar si un objeto determinado realiza un rol X: Se puede listar como sigue una lista de los nombres completamente cualificados de todos los métodos que pueden ser invocados en el objeto, junto con las clases en donde fueron definidos::