
파이썬에서 클래스를 생성할 때, 모든 메소드의 첫 인자를 "self" 라는 키워드를 놓습니다.
이유는 무엇일까요?
class Person:
def __init__(self, name, job):
self.name = name
self.job = job
def introduce(self):
return f"내 이름은 {self.name}, {self.job}이죠"
라고 두었을 때
p = Person("코난", "탐정")
print(p.introduce())
내 이름은 코난, 탐정이죠
이런 결과가 나온다.
여기서 self는 "인스턴스 자기 자신을 의미" 합니다.

그림으로 나타내면 다음과 같다.
여기서 __init__ 의 매개변수 self에 들어가는 값은 Person이라 할 수 있습니다.
self는 그러면 p로 이동합니다.
class는 설계도를 만드는 것과 같다.
Person이라는 예시 class를 인스턴스화 시키고
type으로 print를 찍으면 새로운 자료형이 나온다.

이것은 "클래스는 새로운 자료형"임을 나타낸다.
# self

라고 실행해보면

self의 값과 인스턴스된 id 값이 동일하다.
즉, 객체와 같은 메모리 주소값임이다.
즉 self는 인스턴스화된 본인 자신을 가리킨다.
self는 엄밀히 따지면 실행과정에서 볼 때

이런 과정을 거치며 "인스턴스화된 객체의 메모리 주소값" 을 받아서 객체를 구분한다.
# 결과
self는 메모리적으로 볼 때 자기자신을 가르키고 있다.
self를 이용해서 인스턴스화된 객체를 설계도(class)로 부터 구분한다.
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬의 함수 인자 전달 방식(Call by Assignment) (1) | 2024.05.23 |
---|---|
[Python] Priority Queue, heapq의 차이점 (0) | 2024.01.14 |
[Python] GIL과 thread-safe, Thread-Non-Safe (1) | 2024.01.11 |
[Python] +, append(), extend() 사용법과 내부로직 (0) | 2023.10.17 |

파이썬에서 클래스를 생성할 때, 모든 메소드의 첫 인자를 "self" 라는 키워드를 놓습니다.
이유는 무엇일까요?
class Person:
def __init__(self, name, job):
self.name = name
self.job = job
def introduce(self):
return f"내 이름은 {self.name}, {self.job}이죠"
라고 두었을 때
p = Person("코난", "탐정")
print(p.introduce())
내 이름은 코난, 탐정이죠
이런 결과가 나온다.
여기서 self는 "인스턴스 자기 자신을 의미" 합니다.

그림으로 나타내면 다음과 같다.
여기서 __init__ 의 매개변수 self에 들어가는 값은 Person이라 할 수 있습니다.
self는 그러면 p로 이동합니다.
class는 설계도를 만드는 것과 같다.
Person이라는 예시 class를 인스턴스화 시키고
type으로 print를 찍으면 새로운 자료형이 나온다.

이것은 "클래스는 새로운 자료형"임을 나타낸다.
# self

라고 실행해보면

self의 값과 인스턴스된 id 값이 동일하다.
즉, 객체와 같은 메모리 주소값임이다.
즉 self는 인스턴스화된 본인 자신을 가리킨다.
self는 엄밀히 따지면 실행과정에서 볼 때

이런 과정을 거치며 "인스턴스화된 객체의 메모리 주소값" 을 받아서 객체를 구분한다.
# 결과
self는 메모리적으로 볼 때 자기자신을 가르키고 있다.
self를 이용해서 인스턴스화된 객체를 설계도(class)로 부터 구분한다.
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬의 함수 인자 전달 방식(Call by Assignment) (1) | 2024.05.23 |
---|---|
[Python] Priority Queue, heapq의 차이점 (0) | 2024.01.14 |
[Python] GIL과 thread-safe, Thread-Non-Safe (1) | 2024.01.11 |
[Python] +, append(), extend() 사용법과 내부로직 (0) | 2023.10.17 |