본문 바로가기
아래아한글 자동화

hwpx 모듈 개발 중에 버그 하나를 해결하면서..

by 일코 2023. 11. 15.

2023. 11. 15. 개발일기

hwpx 모듈 개발에 착수한지 일주일쯤 되었는데,
예상하지 못한 몇 가지 문제를 우연히 발견하게 되었다.

Hwp라는 클래스를 만들면서, 생성자(__init__) 안에서
win32로 한/글 오토메이션 오브젝트를 생성하고
인스턴스가 실행하는 모든 메서드는 내부의 hwp 오브젝트와 연결되게끔 매핑을 해두었는데,
오토메이션 프로퍼티 중 HeadCtrl과 LastCtrl 두 개가 말썽이었다.
Hwp인스턴스.HeadCtrl이 클래스 내부에 생성되어 있는 hwp오브젝트.HeadCtrl과
같지 않다는 것을 발견했다.

새 문서를 Hwp로 열었는데, 표를 몇 개 추가한 후
여전히 인스턴스.LastCtrl이 "단 정의"라는 충격적인 결과를 보는 와중에도,
hwp.LastCtrl.Next.UserDesc가 "번호넣기"라는 말도 안 되는 리턴을 보는 와중에도,
내 클래스 정의가 잘못되었다는 생각을 추호도 하지 못하고
아래아한글 버그일 거라고만 한동안 믿고 있었다..ㅜ

너무너무 불친절한 com_error... 해석이 불가능하다ㅜ

짧은 고민 후에 
HeadCtrl과 LastCtrl를 @property 메서드로 변경해버렸다.
당장 문제는 해결되었다.
10년 가까운 파이썬 개발경험 중에
property 데코레이터가 참 유용하다고 생각한,
최초의 순간이었다.

아직 발견하지 못한
잠재된 버그들이 무수히 많을 것이다.

아이고, 무슨 부귀영화를 누리자고 이 고생을 하고 있나?
나 혼자 쓸 때는 오토메이션API면 충분한데,
그나마 다른 사람들이 유용하게 써줄
초긍정의 미래를 상상하며, 스스로를 위로하며
꾸역꾸역 메서드를 매핑하고 있다.

마냥 즐겁지만은 않은 작업이다.
그냥 한다.

 

댓글