복잡한 질문 나는 생각한다. 그러나 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
>>>
입니다 , 파이썬은 똑똑하고 이것을 금지합니다. 그러나 OWL에서는 두 개의 클래스를 상호 서브 클래스로 정의 할 수 있습니다. 질문 : OWL (프로그래밍 언어가 아닌)에서 허용되는 이유와 프로그래밍 언어에서 허용되지 않는 이유에 대해 생각할 수없는 설명은 무엇입니까?
상호 상속을위한 일관된 룰 세트가 존재하지 않음을 나타냅니다. 왜 그런지 자세히 설명해 주시겠습니까? – bayer
나는 그것을 나타내려고하지 않습니다. MI에 대한 일관된 규칙 집합이 존재합니다. 파이썬은 MI에 대한 C3 알고리즘을 따른다. MI 계층 구조는 기본적으로 합리적인 (예측 가능한) MRO를 만들기 위해 평평하게되어 있습니다. 그러나 C3는 상속주기와 기본 안경 사이의 일관되지 않은 기본 클래스 순서와 같이 모호한 상황을 금지합니다. –
C3 알고리즘 ... 흠 ... 너무 무식하고 너무 자주 느껴진다. (googling ... –