실세계에서의 다중 상속

매일 공부(ML)·2023년 2월 20일
0

Fluent Python

목록 보기
83/130

객체지향 상용구

내장 자료형 상속과 다중 상속

실세계에서의 다중 상속

collections.abc 패키지를 통해서 다중 상속을 많이 사용하고, Tcl/Tk에 대한 파이썬 인터페이스로서 tkinter 모듈에 구현된 Tkinter GUI 툴킷은 표준 라이브러리에 다중 상속을 극단적으로 사용하는 예이다.

#print_mro()구현

import tkinter
print_mro(tkinter.Toplevel)
print_mro(tkinter.Widget)
print_mro(tkinter.Button)
print_mro(tkinter.Entry)
print_mro(tkinter.Text)

주의점

Toplevel

시각적 위젯 중 유일하게 Widget에서 상속하지 않고, 최상위 윈도우이므로 다른 윈도우나 프레임에 연결되는 등의 일반적인 위젯 작동 방식을 사용할 수 없으므로, Wm을 상속하며, Wm은 윈도우 타이틀을 설정하고 테두리를 설정하는 등 호스트 윈도우 매니저의 함수를 직접 접근할 수 있게 해준다.


Widget

BaseWidget과 Pack, Place, Grid를 직접 상속하고, 기하 도형 관리자로서 윈도우나 프레임 안에 위젯을 배치하는 책임을 지고 있으며, 각 클래스는 서로 다른 배치 전략 및 위젯 위치 지정 API를 담고 있다.


대부분의 위젯과 마찬가지로 Button은 Widget만 상속하지만, 모든 위젯에 숫ㅂ 가지 메서드를 제공하는 Misc를 간접적으로 상속한다.


Entry

Widget과 XView 클래스(수평 스크롤기능을 구현)를 상속한다.


Text

Widget과 XView,YView 클래스(슂ㄱ 스크롤 기능을 구현) 상속한다.

profile
성장을 도울 아카이빙 블로그

0개의 댓글