앞서, Python에서 OOP 프로그래밍을 하며 계속 벽에 부딪힌다고 얘길 했었다. 그 중 하나가 access modifier인 public, protected, private이 Python에 없는 점이다. 해당 modifier들은 없지만, 유사한 naming convention을 제공한다. 이름 앞에 ‘_'(underscore) 또는 ‘__'(double underscore)를 붙여주면 된다. db_name에 ‘__’로 시작하도록 이름을 사용했고, 이 값을 클래스 외부에서 엑세스하면 attribute error가 발생하게 된다. ‘_'(underscore) 하나를 사용하면, private, 두개를…
[일:] 2020년 04월 14일
Python: 다중 상속시, metaclass 문제
누누히 말하지만, Python이 OOP 프로그래밍에 그다지 적합한 언어는 아니다. 덕분에, OOP 프로그래밍을 지원하기 위해 마련된 장치들이 충돌을 일으키는 경우가 종종 있다. 오늘 겪은 문제는 다중상속시 metaclass 충돌 문제다. 먼저 간단하게 말하면, Python이 다중상속을 지원하지만 metaclass를 다중상속 받을 수는 없다는 얘기다. 우회하는 방법이 있는걸로 보이지만, 굳이 이렇게 까지 해야 하나싶고. 문제의 근원인 인터페이스에 대해 먼저 말해보자….