본문 바로가기
Programming Languages/Python

[파이썬 코딩 테스트] 캡슐화 (Encapsulation)

by Henry Cho 2026. 2. 28.

포스트 난이도: HOO_Junior


# Encapsulation and Private

이번 포스트에서는 캡슐화와 그 안에 선언되는 매개변수를 Private로 선언하는 방법에 대해서 살펴볼 수 있다. 특별히 새로운 functions을 배운다기보다는 특성에 가까운 내용이다 보니 어렵지 않게 이해가 가능하다. 일반적으로 아래 예제코드처럼 캡슐화를 물어보는 코딩테스트가 별도로 나오지는 않지만 알아두면 활용할 수 있다는 점에서 이해하고 가는 것이 좋다.


class MusicPlayer:
    def __init__(self):
        self.__volume = 50 

    def increase_volume(self):
        # Aumenta 10, mas o limite máximo é 100
        if self.__volume < 100:
            self.__volume += 10
            if self.__volume > 100: # Garante que não passe de 100
                self.__volume = 100
        print(f"New volume: {self.__volume}")

    def decrease_volume(self):
        # Diminui 10, mas o limite mínimo é 0
        if self.__volume > 0:
            self.__volume -= 10
            if self.__volume < 0: # Garante que não fique negativo
                self.__volume = 0
        print(f"New volume: {self.__volume}")

# Testando
player = MusicPlayer()
player.increase_volume() # 60
player.decrease_volume() # 50

Figure 1. Results.


파이썬 공부를 할때 배웠던 Public과 Private에 대해서 간략하게 요약하자면, 특정 클래스 안에서만 사용하려면 Private, 외부에서도 정의된 변수를 사용하고 싶다면 Public으로 두면 된다. 개인적으로 Private이 중요하다고 느끼는 점은 코드가 복잡해질수록 가능한 에러가 발생할 수 있는 경우의 수를 줄여야 하는데 이 과정에서 Private 자주 사용해 주면 추후 발생할 예외 경우를 배제해 준다.

 

특히 AI, 우리의 주니어 개발자를 활용하다 보면 작동이 가능한 형태의 코드를 작성해주다 보니 개발자들이 고민하는 것처럼 추후 발생될 문제점이나 유지관리 측면을 고려해주지는 않는다. 그래서 캡슐화와 같이 사람이 볼 수 있는 부분에 대해서는 인지하고 우리만의 주니어 개발자한테 알려줘야 한다.

 

본론으로 돌아와서 위의 코드를 살펴보면 self.__volume이 private으로 선언되어 캡슐화가 된 것을 알 수 있다. 따라서 클래스 안의 해당 변수를 사용할 때 self.volume이 아니라 __가 포함된 private 변수로 작성해서 사용해 주면 된다. 사실 이 외에는 특별히 다른 점이 없기 때문에 쉽게 적용해서 사용해주면 된다.

 

추가로 코딩테스트를 보면 if문 사용이 정말 많은데 if문을 제대로 익숙하게 다룰 줄 알면 시간을 단축할 수 있다. AI를 활용하다 보니 일일이 작성하는데 뇌와 손이 따로 노는데 이 점을 유의해서 미리 준비해 두면 좋을 것 같다.

 

이후에 player = MusicPlayer()로 클래스를 가져와 사용해야 하기 때문에 global 매개변수를 하나 만들어주고 player.increase_volume()을 하게 되면 class MusicPlayer 클래스 안의 정의된 increase_volume 함수가 실행이 된다. 당연히 괄호 안에는 우리가 self로 포인팅을 해두었기 때문에 self__volume 변수가 해당이 되고 초기값 50에서 10이 증가한 60이 나오는 걸 확인할 수 있다. 마찬가지로 player.decrease_volume도 60에서 다시 10을 뺀 50이 나오는걸 알 수 있다.


 

728x90

댓글