Python

[Python] 파이썬 객체지향 프로그래밍 / 클래스, 인스턴스, 메서드 정리

쟈비쓰 2021. 7. 16. 23:58
728x90

가장 자신 있는 프로그래밍 언어는 파이썬인데

안타깝게도 class 쓰는 것에 자신이 없었다......

 

그래도 오늘 여유가 나서 클래스, 매서드 등을 정리해보고 앞으로는 객체 지향 프로그래밍을 해보기로 마음 먹었다.


1. Class (클래스), Instance (인스턴스)

class라는 건 객체의 종류로, 'instance'라는 개념과 대조되어 사용된다.

 

예를 들어 나는 집을 정의해주고 싶다.

그래서 House라는 class를 만들어줄 수 있다.

이 클래스가 지칭하는 특정한 집은 없지만, House라는 개념을 만들어줬다고 생각하면 된다.

그리고 House 중에서도 철수와 영희네 집이 있을 수 있는데, 이런 특정한 집은 'instance(인스턴스)'라고 부른다.

 

 

 

2. Method (메서드)

이런 클래스 내에서 함수를 정의(def)하는 것을 'method(메서드)'라고 부른다.

예를 들어 집이 비어있는 것을 나타내는 함수와, 총 방의 개수를 세주는 함수를 만들면 아래와 같다.

class House:
    def __init__(self):
    	self.isEmpty = False
        self.room = []
     
    def emptyHouse(self):
    	if self.isEmpty:
        	print("Nobody is home!")
         
    def cntRoom(self):
    	room_num = len(self.room)
        print("There are %d rooms." % (room_num) )

emptyHouse()와 cntRoom()은 메서드이다.

 

이전에 얘기한 철수와 영희네 집은 다음과 같이 만들 수 있다.

chulsoo_house = House()
younghee_house = House()

선언한 객체의 메서드를 호출하려면 아래와 같이 써준다.

chulsoo_house.emptyHouse()

__init__으로 초기화할 때 집이 비어있지 않다고 했으므로 프린트 되는 메시지는 없다.

 

 

 

3. __init__ (초기화 메서드)

위에 class를 선언해줄 때 "__init__"이라는 걸 정의해줬다.

이것은 각 객체의 초기값을 설정해주는 기능을 하는 특별한 메서드로, 객체를 선언할 때 자동으로 호출된다.

아래 예시를 참고하면 이해하기 편하다.

class House:
	def __init__(self):
    	self.isEmpty = False
        print("Hi! This is a new house.")

이것을 아래와 같이 실행해보면 다음과 같은 결과를 얻을 수 있다.

>> newHouse = House()
Hi! This is a new house.

>> print(newHouse.isEmpty)
False
728x90