포스트

Python에서 self 매개변수의 역할과 필요성

‘self’란 무엇인가?

self는 파이썬의 클래스와 메서드에서 꼭 필요한 매개변수입니다. 클래스 안에서 정의된 메서드는 첫 번째 매개변수로 자기 자신을 참조하는 self를 반드시 받아야 합니다. ‘클래스’라는 것은 객체 지향 프로그래밍에서 사용되는 개념으로, 비슷한 기능과 속성을 묶어서 관리하는 방법입니다. ‘메서드’는 클래스 안에서 정의된 함수를 의미합니다.

왜 ‘self’가 필요한가?

self 없이는 클래스 내부에서 다른 메서드나 속성에 접근할 수 없습니다. 이 매개변수는 객체 자신을 가리키기 때문에, 클래스 내부에서 사용되는 변수나 메서드에 접근할 때 self.변수명 또는 self.메서드명() 형식으로 사용됩니다.

예를 들어, 학생 정보를 관리하는 클래스가 있다고 가정해봅시다. 이 클래스에는 학생의 이름과 성적을 저장하고, 성적을 출력하는 메서드가 있을 것입니다. 이 때, self를 사용하여 학생마다 다른 이름과 성적을 관리할 수 있습니다.

1
2
3
4
5
6
7
class Student:
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def print_grade(self):
        print(f"{self.name}의 성적은 {self.grade}입니다.")

이 코드에서 self.nameself.grade는 각 객체마다 다른 값을 가질 수 있습니다. 즉, self를 통해 동일한 클래스를 바탕으로 서로 다른 객체를 생성하고 관리할 수 있습니다.

‘self’는 어떻게 동작하는가?

메서드를 호출할 때 self 매개변수는 자동으로 전달됩니다. 예를 들어, 위의 Student 클래스에서 print_grade 메서드를 호출하려면 다음과 같이 코드를 작성할 수 있습니다.

1
2
john = Student("John", "A")
john.print_grade()  # "John의 성적은 A입니다."가 출력됩니다.

여기서 john.print_grade()를 호출하면, print_grade 메서드의 self는 자동으로 john 객체를 참조합니다.

정리

self는 파이썬의 객체 지향 프로그래밍에서 중요한 역할을 합니다. 이를 통해 클래스 내부의 변수와 메서드에 접근할 수 있으며, 동일한 구조를 가진 여러 객체를 효율적으로 관리할 수 있습니다. self가 없다면, 각 객체의 고유한 속성을 관리하기 어려워집니다. 따라서 self는 파이썬 클래스와 메서드에서 필수적인 요소입니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.