Notice
Recent Posts
Recent Comments
Code IT
Python - class 본문
# 파이썬은 객체지향프로그래밍이 가능한 언어다. # 객체지향프로그래밍은 무엇일까? # 문제를 해결하기 위한 개발 패러다임 중 하나이다. 프로그래밍에서 풀고자 하는 # 업무나 문제를 현실세계를 빗대어 해결해보자 라는 패러다임이다. # 깊이 파고든다면 철학적인 문제까지 가게 되니 이쯤만 해두도록 하자. # 클래스는 현실세계에 존재하는 모든 것들을 표현할 수 있는 하나의 수단이자 단위이다. # 현실세계에 존재하는 모든 것들의 공통점을 곰곰히 생각해보면 아래와 같은 결론에 닿게된다. # 모든 것들은 "속성(가지고 있는 것)"과 속성을 가지고 할 수 있는 # 다양한 "행위(가지고 있는 것을 활용한 행위)"를 가지고 있다. # 객체지향 프로그래밍에서 클래스는 방금 봤던 속성과 행위 중 한 가지 이상을 # 만족할 수 있도록 해주어야 한다. 물론, 두 가지를 모두 만족할 수 있다면 더할나위 없을 테지만. # 여기서 속성이라 함은 "클래스가 가진 변수"이고 행위라 함은 "클래스가 가진 함수" 라 해서 # 각각을 멤버변수, 메소드 라고 부른다. # 클래스를 만들어보자. class Car: """ 주석 : 자동차를 클래스로 표현해보자. """ # 아래는 자동차가 가진 속성으로 멤버변수라고 한다. accel_pedal = "플라스틱 엑셀레이터" break_pedal = "플라스틱 브레이크" engine = "휘발유 8기통" # 아래는 자동차가 가진 행위로 메소드라고 한다. def start(self): print(self.engine + "이 켜집니다.") def go(self): print(self.accel_pedal + "을 밟아 " + self.engine + "엔진이 움직입니다.") def stop(self): print(self.break_pedal + "을 밟아 바퀴가 멈춥니다.") # 이렇게 정의된 클래스는 자동차를 정의한 설계도에 지나지 않는다. # 우리가 자동차를 사용하려면, 이 설계도를 가지고 자동차를 만들어야 한다. # 자동차를 만들어보자. car = Car() # 우리는 이것을 "인스턴스" 라고 부른다. 변수와는 다르다. # 자동차의 기능을 사용해보자. car.start() # car 인스턴스의 메소드를 호출한다. car.go() car.stop() # 인스턴스가 처음 만들어질 때 딱 한번 실행되는 "생성자"라는 것도 있다. # 주로 클래스간의 메모리 참조를 위해 사용된다. 잘 모르겠다면 넘어가도 상관없다. class Kona: """ 주석 : 자동차를 클래스로 표현해보자. """ accel_pedal = "플라스틱 엑셀레이터" break_pedal = "플라스틱 브레이크" engine = "휘발유 8기통" def __init__(self): """인스턴스가 만들어질 때 실행되는 생성자. 단 한번만 실행된다.""" print("현대 코나가 만들어졌습니다.") def __del__(self): """ 인스턴스가 소멸(제거)될 때 실행되는 소멸자. 단 한번만 실행된다. Reference Count가 0이 될 때 인스턴스가 소멸된다. """ print("현대 코나가 폐차되었습니다.") def start(self): print(self.engine + "이 켜집니다.") def go(self): print(self.accel_pedal + "을 밟아 " + self.engine + "엔진이 움직입니다.") def stop(self): print(self.break_pedal + "을 밟아 바퀴가 멈춥니다.") kona = Kona() def kona_test(): """ 소멸자 호출을 위한 함수 작성 """ private_kona = Kona() kona_test() # kona_test() 를 실행했을 때만 소멸자 함수가 실행된다. # 이 이유가 궁금하다면, Lexical Scope 를 검색해보자.
'Python & Django' 카테고리의 다른 글
Python - 실습 - 게시판 만들기 (클래스) (0) | 2019.01.31 |
---|---|
Python - 실습 - 게시판 만들기 (함수) (0) | 2019.01.31 |
Python - loop ~ else (0) | 2019.01.31 |
Python - for (0) | 2019.01.31 |
Python - while (0) | 2019.01.31 |
Comments