2015-02-06 3 views
-1

파이썬 기반 클래스 오버라이드 개념과 혼동 스럽습니다. 나는 다른 클래스에서 같은 이름을 가진 두 개의 다른 함수를 가질 수 있다는 것을 배웠고, 객체가 어느 클래스에서 왔는지에 따라 객체에 대해 올바른 함수가 호출 될 것입니다. 그러나 저는 방금 수퍼 전화에 대해 배웠습니다. 그리고 과거의 시제를 되짚어 본다면 다시 사용할 기능을 사용할 수 있다는 것을 배웠습니다. 재정의 된 함수가 처음부터 사라지지 않았기 때문에 혼란 스럽습니다. 그렇습니까? 왜 슈퍼 콜을 사용하여 "복원"해야합니까?파이썬 클래스 오버라이드

+2

이 링크는 파이썬에서 메소드 확인 순서를 이해하는 데 도움이 될 수 있습니다. http://python-history.blogspot.com/2010/06/method-resolution-order.html – ozgur

답변

1

어린이 유형은 MRO에 처음이므로 부모 중 한 사람이 같은 방법을 사용하는 경우에도 해당 방법이 호출됩니다. super 상속 체인의 다음 링크에서 MRO를 "다시 시작"하고 상위 클래스에 속한 속성을 검색 할 수 있습니다.

+0

MRO가 무엇인지 잘 모르겠습니다 만, 나는 당신이 말하는 것을 얻습니다. 그것에 대해 생각한 후에, 나는 (나 같은 프로그래밍 초보자가 도착한다) 대답을 가지고 있다고 생각한다. 이것이 올바른지 누가 알겠습니까? 파생 클래스의 개체는 파생 클래스의 재정의 된 함수 만 사용할 수 있습니다. ** super ** 객체가 기본 클래스의 원래 함수에 액세스 할 수 있습니다. –

+0

MRO는 내 대답의 링크에서 설명합니다. –

+0

나는 파이썬에 대한 유일한 노출이 codeacademy이기 때문에 그것을 이해하는 데 어려움을 겪고있다. –

관련 문제