Сложный вопрос Я предполагаю, но изучение OWL открыло новую перспективу жизни, вселенную и все такое. Я буду философствовать здесь.Подкласс класса. Почему взаимное подклассов запрещено?
Я пытаюсь достичь класса С, который является подклассом 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
>>>
ясно , питон умный и запрещает это. Однако в OWL можно определить два класса как взаимные подклассы. Вопрос в том, каково умопомрачительное объяснение, почему это допускается в OWL (который не является языком программирования) и запрещен в языках программирования?
Вы указываете, что не существует согласованного набора правил для взаимного наследования. Можете ли вы объяснить, почему это так? – bayer
Я не собираюсь это указывать. Существует согласованный набор правил для МИ. Python следует алгоритму C3 для MI. Иерархия ИИ в основном сглажена для создания разумного (и прогнозируемого) MRO. Однако C3 запрещает неоднозначные ситуации, такие как циклы наследования и несогласованное упорядочение базового слоя между базовыми классами. –
C3 алгоритм ... хммм ... Я чувствую себя настолько невежественным, так часто :(googling ... –