둘째, self.setControl이란 함수는 어디서 나왔을까요? 우선 코드를 작성하면서 함수, 변수, 클래스를 사용할 때 두 가지를 떠올리면 좋겠습니다. 지금 만들고 있는 .py에서 함수, 변수, 클래스를 사용하려면 현재 .py에 정의하거나 이미 정의한 패키지를 import해서 사용해야 합니다. 둘 중 어느 경우에도 해당되지 않으면 정의되지 않은 코드를 사용하는 셈이므로 에러가 발생합니다.
그럼 setControl 함수는 우리가 Kiwoom.py 파일 내에 만든 코드가 아니므로 앞서 import한 패키지 어딘가에서 정의되어 있다고 생각해 볼 수 있습니다. 실제로 setControl 함수는 PyQt5.QAxContainer.py 파일에 들어 있습니다. 조금 더 정확히 말하자면 setControl 함수는 Kiwoom 클래스를 만들 때 상속했던 QAxWidget 클래스에 정의되어 있고, 이 QAxWidget은 PyQt5.QAxContainer.py 파일에 포함되어 있습니다.
따라서 Kiwoom.py에서 PyQt5.QAxContainer.py 파일을 import하여 QAxWidget을 사용할 수 있게 한 후 클래스로 상속한다면 setControl 함수를 따로 정의하지 않아도 사용할 수 있습니다.
셋째, "KHOPENAPI.KHOpenAPICtrl.1"이란 무엇을 의미할까요? 이것은 키움증권 웹 사이트에 접속하여 Open API를 설치하면 우리 컴퓨터에 설치되는 API 식별자(프로그램ID, ProgID)라고 생각하면 됩니다. 이 값은 Open API를 설치한 컴퓨터라면 레지스트리에 모두 동일한 이름으로 저장되어 있습니다. 따라서 코드에서 사용할 때 한 글자라도 잘못 입력하면 API 사용이 불가능하기 때문에 그대로 복사한 후 붙여 넣어 사용하길 바랍니다. 실제로 이 값은 우리 PC의 레지스트리 편집기에 등록되어 있으며, Open API를 설치하면 자동으로 등록됩니다.