2024.06.28
💡class, object, instance
class를 와플팬이라고 비유해보면, 똑같은 와플을 만들어 내는 '틀'이라고 생각하자. object를 정의하고 변수와 method의 집합으로 이루어져 있다. 그러니까.. 이 말은 와플팬 내의 모양을 말하는거라고 생각하겠어! 격자모양, 스누피모양, 춘식이모양•••
object는 와플팬으로 만들어진 와플이라고 비유해보자. 이 각 객체는 서로 영향을 주지 않는다. 예를 들어 2개의 와플을 만들어서 와플 한 개를 념념 하나 먹어도 남은 하나는 온전한 모양을 유지하는 것처럼 영향을 주지 않는다.
instance는 class와 object가 소프트웨어에 실체화 되는 것...이라는데, 특정 객체가 어떤 클래스의 객체인지 관계를 중점으로 표현할 때 사용한다고 한다.
class music:
def on(self):
print("음악을 재생합니다.")
jazz = music()
jazz.on()
# 음악을 재생합니다.
1. jazz는 객체(object) 이다. ( jazz는 객체(obejct) )
2. jazz 객체(object)는 music 클래스(class)의 인스턴스(instance) 이다. ( jazz는 music의 인스턴스(instance) ) -관계 중심-
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self):
if self.alive == True:
print('살았다')
else:
print('죽었다')
m1 = Monster()
m1.damage(150)
m1.status_check() #죽었다
m2 = Monster()
m2.damage(90)
m2.status_check() #살았다
파이썬 강의에서 들어준 예시
m1, m2가 Monster 클래스의 인스턴스라고 보면 되고
class 안에 .damage와 .status_check라는 method를 이용하여 object가 정의 되어 있는 것이다.
여기서 self에 대한 이야기를 뺄 수 없다.. self가 뭔데..? 할 수 있으니까! 그래서 찾아 보니,
self 는 객체의 인스턴스 그 자체를 의미 한다.
class 내부에 정의된 함수는 method 라고 하는데 이 때 method의 첫 번째 인자는 반드시 self 여야 한다.
사실 반드시 self 여야 한다는 말은 틀리다. self를 첫 번째 인자로 받지 않아도 되지만 그럴 경우 함수를 호출할 때 문제가 될 수 있다. Python에서는 첫 번째 인자로 항상 instance 가 전달되기 때문이다.
결국 self 자기 자신을 참조하는 매개변수인 것이다.
Python에서 method 를 사용할 때 보통 instance로 만든 후 사용하는 게 일반적이므로 method 를 정의할 때 self 를 첫 번째 인자값으로 주는 것이 좋을 것 같다.
(참고자료)
https://kingnamji.tistory.com/6
https://hyun0k.tistory.com/entry/TIL-17-self%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC
'📒 Today I Learn > 🐍 Python' 카테고리의 다른 글
[Python] While 문 (0) | 2024.07.09 |
---|---|
[Python] range 함수 (0) | 2024.06.28 |
[Python 문법 기초] 함수 심화 (0) | 2024.06.28 |
[Python 문법 기초] map, filter, lambda 식 (0) | 2024.06.28 |
[Python 문법 기초] 한줄의 마법 (0) | 2024.06.27 |