이전 글에서는 클라스의 의미에 대해 알아봤는데요. 클라스를 공부하다보면 인스턴스와 메소드라는 용어를 접하게 됩니다. 이는 무엇일까요?
아래는 기존에 만들었던 쿠키 박스 클라스 코드입니다. 이를 통해 인스턴스와 메소드의 의미를 살펴볼 수 있습니다.
class cookieBox:
def makingCookie(self, *cookies):
box = []
for cookie in list(cookies):
box.append(cookie)
print(box)
cookieBox1 = cookieBox()
cookieBox2 = cookieBox()
cookieBox1.makingCookie('whiteCookie', 'blackCookie')
# ['whiteCookie', 'blackCookie']
cookieBox2.makingCookie('whiteCookie', 'brownCookie')
# ['whiteCookie', 'brownCookie']
인스턴스란?
쿠키 박스를 만드는 클라스에서 다음 부분이 개별적인 박스를 생성하는 부분입니다. 이처럼 클라스를 통해 만들어진 객체를 인스턴스(instance)라고 합니다.
cookieBox1 = cookieBox()
cookieBox2 = cookieBox()
그렇다면 이를 일반적인 객체와 굳이 구분하는 이유는 무엇일까요? 바로, 해당 객체가 특정 클라스로부터 비롯되었다는 관계를 명시적으로 설명할 수 있기 때문입니다.
메소드란?
메소드(method)란 클라스 내의 함수를 일컫습니다. 인스턴스와 마찬가지로 이를 보통의 함수와 다르게 일컫는 이유는 클라스와의 관계를 설명하기 위함입니다.
위 코드에서는 다음 부분이 cookieBox
클라스 내 makingCookie()
함수를 호출하는 부분입니다.
cookieBox1.makingCookie('whiteCookie', 'blackCookie')
# ['whiteCookie', 'blackCookie']
cookieBox2.makingCookie('whiteCookie', 'brownCookie')
# ['whiteCookie', 'brownCookie']
그런데 makingCookie()
의 인자를 살펴보면 self
라는 메소드를 호출할 때는 사용하지 않는 변수가 포함되어 있는 것을 볼 수 있습니다. 이는 무엇일까요?
결론부터 말하자면, 첫 번째 매개변수(여기서는 self
이나 다른 명칭을 사용할 수도 있음)에는 메소드를 호출한 객체(cookieBox1
과 cookieBox2
)가 자동으로 전달됩니다.
각 객체에서 메소드를 호출하면 다음과 같은 일이 발생하며, 이를 통해 독립적인 객체가 생성됩니다.
cookieBox1.makingCookie('whiteCookie', 'brownCookie')
cookieBox1.makingCookie('whiteCookie', 'blackCookie')
def makingCookie(cookieBox1, *cookies):
box = []
for cookie in list(cookies):
box.append(cookie)
print(box)
cookieBox2.makingCookie('whiteCookie', 'brownCookie')
cookieBox1.makingCookie('whiteCookie', 'blackCookie')
def makingCookie(cookieBox2, *cookies):
box = []
for cookie in list(cookies):
box.append(cookie)
print(box)
'개발 > Python' 카테고리의 다른 글
파이썬 클라스 설명 (3) self와 __init__이란? (0) | 2021.12.21 |
---|---|
파이썬 클라스 설명 (1) 클라스란? (0) | 2021.12.13 |
파이썬 함수 설명 (2) 변수와 스코프 (0) | 2021.12.09 |