본문 바로가기

Programming/python

python에서 self에 대해서 알아보자

파이썬에서 `self`는 클래스의 인스턴스(객체)를 참조하는 특별한 매개변수입니다. 

 

클래스의 메서드(함수) 정의 시 첫 번째 매개변수로 `self`를 명시하는 것이 관례입니다. 

이를 통해 메서드가 해당 클래스의 인스턴스에 접근하여 속성을 읽거나 수정할 수 있습니다.

 

클래스와 같은 구조에서 생성된 객체는 개별적인 의미를 가지기 때문에 여러 개가 선언되더라도 각 객체는 자신만의 독립적인 존재입니다. 이러한 독립성을 유지하며 객체를 생성할 때, 파이썬에서는 이를 특정하기 위해 self라는 매개변수를 사용합니다.

 

클래스는 객체를 생성하는 템플릿이며, 객체는 해당 클래스의 인스턴스입니다. 클래스는 객체의 동작을 정의하고, 객체는 클래스에서 정의된 동작을 실제로 수행합니다. self 매개변수는 이러한 동작의 연결 고리로서, 객체가 자신의 고유한 속성을 가질 수 있도록 합니다.


`self` 매개변수를 이해하기 위해 예제를 살펴보겠습니다:

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name}가 멍멍 짖습니다!")

    def get_age(self):
        return self.age

    def set_age(self, new_age):
        self.age = new_age


위의 예제에서 `Dog` 클래스는 개를 나타내는 클래스입니다. 

`__init__` 메서드는 클래스의 생성자(constructor)로, 인스턴스가 생성될 때 호출되며, `self`를 통해 해당 인스턴스의 속성(`name`과 `age`)을 초기화합니다. 

 

인스턴스 생성 시 전달되는 `name`과 `age` 매개변수는 각각 `self.name`과 `self.age`에 저장됩니다.

`bark` 메서드는 인스턴스가 짖을 수 있도록 동작을 정의합니다. 

`get_age` 메서드는 인스턴스의 나이를 반환하는 메서드로, `self.age`를 사용하여 해당 인스턴스의 나이에 접근합니다.

`set_age` 메서드는 인스턴스의 나이를 변경하는 메서드로, 새로운 나이 값을 `new_age` 매개변수로 받아 `self.age`에 할당하여 속성을 업데이트합니다.

이제 예제를 사용하여 클래스를 인스턴스화하고 메서드를 호출해 보겠습니다:

# 클래스 인스턴스 생성
dog_instance = Dog("멍멍이", 3)

# bark() 메서드 호출
dog_instance.bark()  # 출력: 멍멍이가 멍멍 짖습니다!

# get_age() 메서드 호출
age = dog_instance.get_age()
print(age)  # 출력: 3

# set_age() 메서드 호출
dog_instance.set_age(4)
print(dog_instance.get_age())  # 출력: 4


`self`를 통해 클래스 내부의 속성에 접근하고 수정할 수 있으므로, 인스턴스 각각이 독립적으로 자신의 데이터를 관리할 수 있습니다. 

`self`를 사용하면 클래스의 메서드가 인스턴스의 상태를 올바르게 관리하고 클래스의 기능을 제공하는데 유용하게 사용할 수 있습니다.

반응형