Python in a Nutshell (2nd Edition) 책 에는
기존 스타일 클래스를 사용 하여 메서드가 고전적인 해결 순서로 해결되는
방법과 새로운 순서 와 어떻게 다른지 보여주는 예제 가 있습니다.
새 스타일로 예제를 다시 작성하여 동일한 예제를 시도했지만 결과는 이전 스타일 클래스에서 얻은 것과 다르지 않습니다. 예제를 실행하는 데 사용하는 파이썬 버전은 2.5.2입니다. 다음은 그 예입니다.
class Base1(object):
def amethod(self): print "Base1"
class Base2(Base1):
pass
class Base3(object):
def amethod(self): print "Base3"
class Derived(Base2,Base3):
pass
instance = Derived()
instance.amethod()
print Derived.__mro__
호출이 instance.amethod()
인쇄 Base1
되지만 새로운 스타일의 클래스로 MRO에 대한 나의 이해에 따라 출력이되어야합니다 Base3
. 호출 Derived.__mro__
은 다음을 인쇄합니다.
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
새로운 스타일 클래스를 사용하는 MRO에 대한 이해가 잘못되었는지 또는 감지 할 수없는 어리석은 실수를하고 있는지 확실하지 않습니다. MRO를 더 잘 이해하도록 도와주세요.