Language/Python / / 2021. 4. 30. 15:55

Class - 기본

반응형

주식 자동화 프로그램을 만들기 위한 파이썬 기본 공부를 한 내용입니다.


python-class-logo

정의


자바를 먼저 접했던 사람에게는 클래스라는 개념이 익숙할 것이다.

객체를 만드는 것으로 특별한 기능하는 함수(기능들)와 데이터를 가지는 것을 가진다.

 

class Stock():
    def __init__(self):
        print("Stock class init")


stock = Stock()

#결과
Stock class init

class 로 선언을 하고 클래스이름을 지정한다.

__init__  는 생성자 이다.

즉 클래스를 호출하면 맨 처음 호출되는 함수이다.

 

이 클래스로 데이터를 넘겨주고 싶을 때는 이 생성자를 이용하면 된다.

 

class Stock():
    def __init__(self, account_num):
        print("Stock class init")
        print("계좌번호 %s " % account_num)


stock = Stock("123456")

#결과
Stock class init
계좌번호 123456 

 

여기서 주의 깊에 볼 것은 self 이다.

나 자신 말 그대로 나 자신이다.

각 클래스가 self 속성을 가지기 때문에 헷갈릴 수 있다.

 

 

class Stock():
    def __init__(self, account_num, pocket):
        print("Stock class init")
        self.account_num = account_num
        self.pocket = pocket

stock = Stock("123456", "50000")

print("계좌번호 : "+ stock.account_num  + " 금액 : " + stock.pocket)

#결과
Stock class init
계좌번호 : 123456 금액 : 50000

 

init 함수가 맨 처음 호출 되기 때문에 값을 초기화 할때도 사용된다. 

 

클래스 안에 있는 변수는  stock.account_num 이렇게 접근 가능하다.

 

여기서 주의할 점이 있다.

class Stock():
    code = "035720" # 잘못 사용된 클래스 변수
    def __init__(self, name, price):
        print("Stock class init")
        self.name = name
        self.price = price

kakao_stock = Stock("카카오", "200000")
naver_stock = Stock("NAVER", "358000")
print("카카오 code : %s " % kakao_stock.code)
print("카카오 종목명 : %s" % kakao_stock.name)
print("네이버 code : %s " % naver_stock.code)
print("네이버 종목명 : %s" % naver_stock.name)


#결과
Stock class init
카카오 code : 035720 
카카오 종목명 : 카카오
네이버 code : 035720 
네이버 종목명 : NAVER

 

위 코드를 보면 name 과 price 는 각 인스턴스 마다 변수가 사용되 값이 다른걸 볼 수 있는데

code 변수는 다 공유가 되어 다른 인스턴스여도 같은 값을 보여준다는 것을 알 수 있다.

 

그러므로 변수를 지정해서 쓸 때는 주의가 필요하다.


본 문서는 아래 문서를 참고하여 공부한 내용이 정리되어 있습니다.

https://docs.python.org/ko/3.9/tutorial/classes.html

 

9. 클래스 — Python 3.9.4 문서

9. 클래스 클래스는 데이터와 기능을 함께 묶는 방법을 제공합니다. 새 클래스를 만드는 것은 객체의 새 형 을 만들어서, 그 형의 새 인스턴스 를 만들 수 있도록 합니다. 각 클래스 인스턴스는

docs.python.org

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유