Сложный вопрос, я полагаю, но изучение OWL открыло новую перспективу жизни, Вселенной и всего остального. Я тут философствую.
Я пытаюсь получить класс C, который является подклассом B, который, в свою очередь, является подклассом C. Знаете, просто для удовольствия...
Итак, вот оно
>>> 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
>>>
ясно, python умный и запрещает это. Однако в OWL можно определить два класса как взаимные подклассы. Вопрос в следующем: каково ошеломляющее объяснение, почему это разрешено в OWL (который не является языком программирования) и запрещено в языках программирования?