반응형
주식 자동화 프로그램을 만들기 위한 파이썬 기본 공부를 한 내용입니다.
정의
자바를 먼저 접했던 사람에게는 클래스라는 개념이 익숙할 것이다.
객체를 만드는 것으로 특별한 기능하는 함수(기능들)와 데이터를 가지는 것을 가진다.
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
반응형