Una subclase de clase de sí misma. ¿Por qué está prohibida la subclasificación mutua?
Asumo una pregunta compleja, pero estudiar OWL abrió una nueva perspectiva para vivir, el universo y todo. Me estoy volviendo filosófico aquí.
Estoy tratando de lograr una clase C, que es la subclase de B, que a su vez es la subclase de C. Solo por diversión, ya sabes ...
Asi que aqui esta
>>> class A(object): pass
...
>>> class B(A): pass
...
>>> class C(B): pass
...
>>> B.__bases__
(<class '__main__.A'>,)
>>> B.__bases__ = (C,)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a __bases__ item causes an inheritance cycle
>>>
claramente, python es inteligente y lo prohíbe. Sin embargo, en OWL es posible definir dos clases para ser subclases mutuas. La pregunta es: ¿cuál es la explicación alucinante por qué esto está permitido en OWL (que no es un lenguaje de programación) y no está permitido en los lenguajes de programación?