Menu
Coddy logo textTech

self 매개변수

Coddy Python 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 64개 중 4번째.

self 매개변수는 메서드 내에서 클래스의 인스턴스를 가리킵니다. 이를 통해 현재 객체의 속성에 접근하고 수정할 수 있습니다.

다음은 self를 사용하는 메서드가 포함된 클래스의 예입니다:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

self 매개변수는 메서드 정의에서 항상 첫 번째 매개변수여야 합니다. 이는 메서드에게 어떤 특정 객체가 사용되고 있는지를 알려줍니다.

자동차 객체를 생성하고 속성을 추가합니다:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

이제 메서드를 호출하세요:

my_car.honk()
my_car.describe()

출력:

Beep beep!
I am a Red Sedan

my_car.describe()를 호출할 때 self에 아무것도 전달하지 않는다는 점에 유의하세요. Python은 자동으로 my_carself 매개변수로 전달합니다.

내부적으로 일어나는 일은 다음과 같습니다:

# 이렇게 작성하면:
my_car.describe()

# 파이썬은 실제로 이렇게 수행합니다:
Car.describe(my_car)

self 매개변수는 각 객체가 자신의 데이터에 접근할 수 있게 해줍니다. self가 없다면, 메서드는 어떤 객체의 속성을 사용해야 할지 알 수 없을 것입니다.

핵심 포인트: 메서드 정의 시 self를 항상 첫 번째 매개변수로 포함하세요. 하지만 메서드를 호출할 때는 이를 전달하지 마세요. 파이썬이 이를 자동으로 처리합니다.

challenge icon

챌린지

쉬움

car.py에 있는 Car 클래스에 self 매개변수를 사용하여 자동차의 연식(year), 제조사(make), 모델(model)을 다음 형식으로 출력하는 display_info 메서드를 추가하여 완성하세요:

"This car is a [year] [make] [model]".

  • car.py: display_info 메서드를 추가할 Car 클래스 정의가 포함되어 있습니다
  • driver.py: Car 클래스를 가져와서 사용하는 메인 실행 파일입니다

driver.py 파일은 Car 클래스를 가져와서 구현 내용을 테스트하기 위한 인스턴스를 생성합니다. 드라이버 파일에서 호출했을 때 메서드가 올바르게 작동하는지 확인하세요.

치트 시트

self 매개변수는 메서드 내에서 클래스의 인스턴스를 가리키며, 현재 객체의 속성에 접근하고 수정할 수 있게 해줍니다.

self는 메서드 정의에서 항상 첫 번째 매개변수여야 합니다:

class Car:
    def honk(self):
        print("Beep beep!")
    
    def describe(self):
        print(f"I am a {self.color} {self.model}")

객체를 생성하고 속성을 추가합니다:

my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"

메서드 호출 (파이썬은 자동으로 객체를 self로 전달합니다):

my_car.honk()        # Beep beep!
my_car.describe()    # I am a Red Sedan

핵심 포인트: 메서드 정의 시 항상 self를 첫 번째 매개변수로 포함하되, 메서드를 호출할 때는 절대 전달하지 마세요.

직접 해보기

from car import Car

# 코드를 테스트합니다
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"

my_car.display_info()  # 출력 결과: This car is a 2020 Toyota Corolla
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Object Oriented Programming의 모든 레슨