primera vez en el desbordamiento de la pila.En Ruby o Python, ¿se puede reescribir el concepto de Clase?
Estoy buscando utilizar algunas de las funciones de metaprogramación proporcionadas por Ruby o Python, pero primero necesito saber en qué medida me permitirán ampliar el idioma. Lo principal que debo poder hacer es volver a escribir el concepto de Clase. Esto no significa que quiera reescribir una clase específica durante el tiempo de ejecución, sino que quiero hacer mi propia conceptualización de lo que es una clase . Para ser un smidge más específico aquí, quiero hacer algo que es como lo que la gente normalmente llama una clase, pero quiero seguir el supuesto "open world". En el "mundo cerrado" de las Clases normales, si declaro que Poodle es una subclase de Perro para ser una subclase de Animal, entonces sé que Poodle tampoco será un tipo de FurCoat. Sin embargo, en una Clase mundial abierta, entonces el objeto Poodle que he definido puede o no ser objeto de tipo FurCoat y no lo sabremos con certeza hasta que explique que puedo usar el poodle. (Poodle Poodle.) Todo esto tiene que ver con un estudio que estoy haciendo sobre ontologías OWL.
Para que lo sepas, traté de encontrar información en línea, pero debido a la sobrecarga de términos aquí no encontré nada útil.
gracias Super, John
Actualización: Me acaba de ocurrir un buen caso de uso para mi concepto de mundo abierto de clase. Tal vez esto proporcionará una mejor comprensión de lo que realmente deseo hacer. Quiero poder "describir" una clase en lugar de definirla. Por ejemplo, quiero poder decir que un perro es cualquier cosa que a) tiene cuatro patas b) ladra. Entonces, quiero poder crear un objeto de Clase no especificada y describir que este objeto tiene cuatro patas. En este punto, el objeto sigue siendo de tipo no especificado. Entonces quiero decir que el objeto ladra. En este punto, se conocerá que el objeto (posiblemente entre otras cosas) es un perro.
¿Podría ser la herencia múltiple que está buscando? Eso permitiría que 'Poodle' sea una subclase de' Dog' y 'FurCoat', y como consecuencia, encontrar que' Poodle' es una subclase de 'Dog' no excluye la posibilidad de que sea una subclase de' FurCoat'. –
Parece que estás demasiado obsesionado con esta idea de modificar la clase. Es posible cambiar cómo 'is_a?' Funciona en Ruby para comparar campos en lugar de los tipos de clase y debe hacer lo que desee. –