본문 바로가기
파이썬/주식 자동매매

Python 키움API 자동매매프로그램 개발-22.Python 기초편 클래스(1) 들여쓰기, 인스턴스화

by 행복론자 2021. 1. 31.

시리즈 이전글입니다.

2021/01/31 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-21.Python 기초편 함수(4)매개변수, 호출순서

 

 

클래스(class)란 간단히 설계도라고 할 수 있습니다. 

비유를 들어 설명드리자면 잘 아시다시피 자동차를 만들 때 설계도가 필요합니다. 

 

이렇게 설계도를 가지고 있다면 설비를 갖춘 공장이면 어디서든 동일한 자동차를 만들어낼 수 있다는 장점이 있습니다. 

하지만 자동차를 어떻게 만들 것인지 설계도에 적어놓고 만들지 않는다면 무용지물일 것입니다.

프로그래밍 세계에서 클래스는 자주 만들어 사용하고자 하는 것의 설계도라고 할 수 있습니다.

이 클래스 안에는 변수와 함수를 정의해서 어떤 기능들을 할 수 있는지 명시할 수 있습니다.

이렇게 명시한 내용을 실체화여 사용하는 과정을 클래스를 인스턴스(instance)화한다고 표현합니다. 

그러면 일단 클래스를 정의하는 방법부터 알아보겠습니다. 

class 클래스명:
  def 함수1(self):
      기능1

   def 함수2(self):
      기능2

 

class라는 키워드 다음 클래스명을 작성해줍니다. 여기서 클래스명은 보통 대문자로 시작하며 class 내부에서만 사용할 수 있는 함수들을 원하는대로 정의할 수 있습니다. 

예를 들어 로봇이 할 수 있는 일을 몇가지 함수로 가지고 있는 클래스를 만들어보겠습니다.

class Robot:
  def move(self, direction):
      print("{}쪽으로 움직입니다.".format(direction))
     
  def fly(self):
      print("날아갑니다.")

 

 

지금까지 중요하지 않은 것이 어디있겠냐만은 class는 특히 중요하고 제일 어려울 수도 있는 부분이기에 하나씩 천천히 살펴보겠습니다.

 

 

01.들여쓰기

먼저 조건문, 반복문, 함수의 사용 때처럼  class Robot 밑에 등장하는 코드들은 전부 들여쓰기가 되어 있어야 class를 구성하는 멤버로 인식됩니다.



02.인스턴스화

클래스는 설계도이기 때문에 클래스를 선언만해놓고 생성하지 않으면 아무 일도 일나지 않습니다.

자동차를 만들 수 있는 설계도가 있다면 설계만 하는 것이 아니라 그대로 직접 만들어야만 사용가능한 자동차가 되듯이 Python 클래스라는 설계도를 바탕으로 실체화해야 정의한대로 사용할 수 있게됩니다.

여기서 클래스를 실체화하는 것을 객체를 생성한다(객체화) 혹은 인스턴스화 한다라고 표현하며 생성된 것을 객체 혹은 인스턴스라고 말합니다.

 

다음은 Robot 클래스를 객체화(인스턴스화)하는 방법입니다. 

robot1 = Robot()

 

 

만들어놓은 클래스명 다음에 ()를 사용하고 이를 robot1이라는 변수를 만들어 저장했습니다.

여기서 robot1은 우리가 만든 Robot 클래스의 객체, 인스턴스라고 표현합니다. 

하지만 객체라는 말이 범용적으로 쓰이기도 해서 사용하다보면 점차 클래스나 객체, 인스턴스 모두 결국 같은말인 것처럼 보일 수도 있지만 자동차 설계도로 자동차를 만들 수 있다고 해서 설계도를 자동차라고 부르지 않듯이 구분이 필요한 표현입니다.

 

하지만 여기서 보다 정확한 표현은 다음과 같습니다.

robot1은 객체이다.
객체 robot1은 Robot 클래스의 인스턴스이다.

 

 

클래스를 통해 생성된 것을 가리킬 때는 객체라고 표현하는 것이 보다 정확한 표현이며

인스턴스는 객체와 클래스 간의 관계를 나타낼 때 사용하는 것이 더 적절한 표현이라는 것을 기억하시기 바랍니다.



03.객체 생성

설계도대로 만든 객체는 설계도에 존재하는 기능들을 사용할 수 있습니다. 

Robot 클래스에서 move, fly 함수를 만들어 놓았으므로 robot1 객체에서 사용할 수 있습니다. 사용방법은 다음과 같습니다.

객체명.함수

 

 

생성한 객체 다음에 점(.)을 찍고 정의한 함수를 사용하면 됩니다. 예를 들어 fly함수를 사용하려면 다음과 같이 코드를 작성합니다. 

robot1.fly()

 

 

Pycharm에서는 생성한 객체 다음에 점(.)을 찍으면 다음처럼 이 변수로 할 수 있는 것들을 보여주기 때문에 사용할 수 있는 함수, 변수들을 미리 살펴볼 수 있습니다. 



그러면 fly와 move는 만들어놨으니 알겠는데 나머지는 무엇이냐고 하시면 

클래스라는 것을 만들어 사용하면 기본적으로 제공되는 것들이라고 가볍게 생각하시기 바랍니다.

 


같이 보시면 좋을 글

2021/02/10 - [파이썬/주식 자동매매] - 주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

 

주식매매프로그램 개발 노하우, 소스를 담은 전자책이 발간되었습니다.

주식매매프로그램 개발 노하우에 관한 제 전자책이 발간되었습니다. https://kmong.com/gig/292764 주식매매프로그램, 쉽게 따라 만드는 노하우와 소스를 드립니다. | 36000원부터 시작 가능한 총 평 0개

jsp-dev.tistory.com

 

 

2021/02/01 - [파이썬/주식 자동매매] - Python 키움API 자동매매프로그램 개발-23.Python 기초편 클래스(2) self, __init__

 

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글