«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Code IT

Python - class 본문

Python & Django

Python - class

Codit 2019. 1. 31. 15:01
# 파이썬은 객체지향프로그래밍이 가능한 언어다.
# 객체지향프로그래밍은 무엇일까?
# 문제를 해결하기 위한 개발 패러다임 중 하나이다. 프로그래밍에서 풀고자 하는 
# 업무나 문제를 현실세계를 빗대어 해결해보자 라는 패러다임이다.
# 깊이 파고든다면 철학적인 문제까지 가게 되니 이쯤만 해두도록 하자.

# 클래스는 현실세계에 존재하는 모든 것들을 표현할 수 있는 하나의 수단이자 단위이다.
# 현실세계에 존재하는 모든 것들의 공통점을 곰곰히 생각해보면 아래와 같은 결론에 닿게된다.
# 모든 것들은 "속성(가지고 있는 것)"과 속성을 가지고 할 수 있는 
# 다양한 "행위(가지고 있는 것을 활용한 행위)"를 가지고 있다.

# 객체지향 프로그래밍에서 클래스는 방금 봤던 속성과 행위 중 한 가지 이상을 
# 만족할 수 있도록 해주어야 한다. 물론, 두 가지를 모두 만족할 수 있다면 더할나위 없을 테지만.

# 여기서 속성이라 함은 "클래스가 가진 변수"이고 행위라 함은 "클래스가 가진 함수" 라 해서 
# 각각을 멤버변수, 메소드 라고 부른다.

# 클래스를 만들어보자.

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