반응형
클래스의 매개변수 self
를 알기 쉽게 정리
1. self
란?
self
는 클래스 내부에서 "현재 사용 중인 객체 자기 자신"을 의미합니다.- 객체를 통해 메서드를 호출하면 Python이 자동으로 해당 객체를 메서드의 첫 번째 매개변수로 전달합니다.
- 즉,
self
는 객체가 메서드와 속성에 접근할 수 있도록 돕는 역할을 합니다.
2. self
가 필요한 이유
- 클래스는 설계도이고, 객체는 설계도로 만든 실제 제품입니다.
- 각 객체가 자신의 속성과 동작(메서드)을 독립적으로 유지하기 위해
self
를 사용합니다.
class Person:
def __init__(self, name):
self.name = name # 객체마다 독립적인 name을 가짐
p1 = Person("홍길동")
p2 = Person("김영희")
print(p1.name) # 홍길동
print(p2.name) # 김영희
3. self
의 역할
- 객체 속성 관리
- 객체의 속성(필드)을 정의하고 접근할 때 사용됩니다.
self.속성명 = 값
형태로 객체마다 고유의 값을 설정합니다.class Car: def __init__(self, brand, model): self.brand = brand # 객체의 브랜드 설정 self.model = model # 객체의 모델명 설정 car1 = Car("현대", "아반떼") car2 = Car("기아", "K5") print(car1.brand) # 현대 print(car2.model) # K5
- 메서드 간 상호 호출
- 클래스 내부에서 다른 메서드를 호출할 때도
self
를 사용합니다.
class Calculator: def __init__(self, value): self.value = value def add(self, amount): self.value += amount def display(self): self.add(10) # self를 통해 add 호출 print(f"현재 값: {self.value}") calc = Calculator(100) calc.display() # 출력: 현재 값: 110
- 클래스 내부에서 다른 메서드를 호출할 때도
- 객체 간 독립성 유지
self
덕분에 여러 객체를 생성해도 각 객체의 속성은 독립적으로 유지됩니다.
4. 이름이 꼭 self
일 필요는 없다
self
는 관례적인 이름일 뿐, 다른 이름을 사용해도 동작은 동일합니다.- 하지만 관례를 따르는 것이 가독성과 협업에 유리합니다.
class Example:
def __init__(this, value): # self 대신 this 사용
this.value = value
def show(this):
print(this.value)
ex = Example(10)
ex.show() # 출력: 10
5. self
없는 메서드
self
를 생략하면 객체가 메서드를 호출할 때, Python이 객체를 전달하지 않으므로 오류가 발생합니다.class Test: def greet(): # self를 생략하면 오류 발생 print("안녕하세요") obj = Test() obj.greet() # TypeError: greet() takes 0 positional arguments but 1 was given
정리: 쉽게 말해 self
란?
self
는 "현재 객체 자신"을 가리키는 특별한 매개변수입니다.- 이를 통해 객체의 속성(값)과 메서드(함수)를 관리하고 사용할 수 있습니다.
- 모든 객체는 독립적인 속성과 메서드를 가지며, 이를 가능하게 하는 것이
self
입니다.
한 줄 요약
self
는 객체 자신을 참조하는 매개변수로, 클래스 내부에서 객체의 속성과 메서드에 접근할 때 사용됩니다.
'실버를 위한 코딩 > 파이썬' 카테고리의 다른 글
'import pizza'와 'from pizza import *'의 차이 (1) | 2024.12.07 |
---|---|
[파이썬] PyCharm 리소스 선언 확인 (1) | 2024.12.06 |
객체 지향 프로그램의 핵심, 클래스(class) (0) | 2024.12.04 |
파이썬의 함수 (0) | 2024.12.03 |
반복문: for, while, 중첩 반복문, 반복문 제어 (1) | 2024.12.02 |