super의 의미(Duet.다중상속)
카테고리: 파이썬 코어 (Python Core & Fundamental)
난이도: 초급
발표 시간: 15분
언어: 한국어
설명
super의 의미 (Duet. 다중 상속) 세션에서는 super의 진정한 의미에 대해 알아보고, 나아가 다중 상속을 효율적으로 다룰 수 있는 몇 가지 방법을 소개합니다. 많은 사람이 파이썬 클래스의 super를 "부모 클래스"라 설명합니다. 부모 클래스라는 설명이 틀린 것은 아니지만 super의 진정한 의미로 보긴 어렵습니다. 만약 super의 의미가 부모 클래스라고 한다면, 클래스의 다중 상속 상황에서 자식 클래스의 super는 다수의 부모를 가리켜야 합니다. 하지만 실제로 super는 그렇게 동작하지 않습니다. super의 진정한 의미를 알기 위해서는 클래스 다중 상속의 다이아몬드 문제와 MRO를 먼저 알아야 합니다. 다이아몬드 문제란 다중 상속에서 부모 클래스에 서로 겹치는 이름의 메서드가 존재할 때, 어떤 부모의 메서드를 호출할 지 모르기 때문에 발생하는 문제입니다. 그리고 MRO란 파이썬에서 제시하는 다이아몬드 문제에 대한 해결책입니다. MRO는 관련된 모든 클래스의 메서드 실행 순서를 지정하여 다이아몬드 형태를 선형화하는 것으로 문제를 해결합니다. 즉, super 진정한 의미는 MRO에서 정해진 다음 순서의 메서드인 것입니다. 세션에서 사용되는 예제는 MRO를 이해하는 것만으로도 충분합니다. 하지만 실제 프로그램에서는 예제보다 더 크고 복잡한 클래스들을 마주하게 됩니다. 크고 복잡한 클래스들이 다중 상속까지 사용하여 얽혀야 한다면 MRO와 더불어 패턴, 방법에 대한 고려까지 되어야 효율적인 사용이 가능합니다. 그래서 세션의 마지막에는 다중 상속을 효율적으로 사용할 수 있는 몇 가지 방법을 소개하며 마무리됩니다. 다중 상속은 많은 이점도 있지만 프로그래밍 언어에 따라 아예 지원하지 않을 정도로 크고 작은 문제점을 가지고 있습니다. 파이썬에서는 이를 지원해주는 만큼 효율적인 사용을 통해 이점만 챙길 수 있다면 좋을 것 같습니다.발표자 소개
안원석
안녕하세요. 위인터랙트의 개발팀 팀장 안원석입니다. 전체적인 서비스를 개발하고, 팀을 관리하는 일을 하고 있습니다. 파이썬은 Django 개발과 데이터 수집/정제/구축 등의 활용 하고 있습니다. 파이콘 2022에서 세션을 진행하게 되어 영광입니다. 많은 관심 부탁드리고, 피드백해 주시길 바랍니다. 감사합니다.