본문 바로가기
Programming Languages/Python

[파이썬 코딩테스트] 캡슐화 (encapsulation)에서 private methods 사용하기

by Henry Cho 2026. 3. 2.

포스트 난이도: HOO_Middle


# Private Methods

거두절미하고 general coding test에서 이것만 별도로 나오지는 않는다. 그리고 캡슐화 (encapsulation)은 쓸 줄 알아야 private, public parameters를 설정할 수 있지만 private methods까지 나온 적은 없었다. 한마디로 private methods를 사용할 줄 몰라도 당장 코딩테스트를 보는데 큰 문제는 없지만 알아두면 보다 더 효율적이고 빠르게 문제를 풀어낼 수는 있다. 쉽게 말해서 문제를 푸는데 지름길을 안다면 당연히 다른 사람보다 빠르지 않겠는가. 물론 실무에서는 당. 연. 히 알고 있어야 한다.


class SmartFridge:
    def __init__(self, temperature):
        # Attributo privato per la temperatura (Encapsulation)
        self.__temperature = temperature  

    def get_temperature(self):            
        # Metodo pubblico (Getter) per accedere all'attributo privato
        return self.__temperature

    # Metodo privato: il nome inizia con __
    def __adjust_temp(self, change):
        # Modifica la temperatura internamente
        self.__temperature += change

    def cool_down(self):                  
        # Metodo pubblico che usa il metodo privato per raffreddare di 5 gradi
        self.__adjust_temp(-5)

# Verifica dei risultati
fridge = SmartFridge(5)
print(f"Temperatura attuale: {fridge.get_temperature()} gradi")         

fridge.cool_down()                      
print(f"Temperatura dopo il raffreddamento: {fridge.get_temperature()} gradi")

Figure1. Results


위의 예제를 보면 냉장고의 온도가 조절된다는 설정에서 캡슐화와 이에 따르는 private methods를 어떻게 선언하고 사용하는지 알 수 있다. 클래스 선언과 캡슐화 부분에 대해서는 이전 포스트에서 살펴봤듯이 self.__temperature = temperature로 self.temperature = temperature로 작성하는 public과 달리 __를 사용해서 private으로 선언이 가능하다.

 

이후에 def __adjust_temp(self, change): 를 보면 일반 다른 메서드(또는 함수)와 차이점을 쉽게 발견할 수가 있는데, 바로 __를 붙이면 된다. Parameters와 마찬가지로 __만 붙이면 바로 Private methods를 사용할 수 있기 때문에 어렵지 않다. 이렇게 해서 해당 메서드는 클래스 밖에서 사용이 안되게 설정이 가능하다. 100% 안 되는 게 아니라 여기서 꼼수가 있는데 " fridge._SmartFridge__adjust_temp(-10)" 이런 식으로 클래스명과 함께 사용하면 해당 메서드를 꺼내올 수가 있다.

 

이후에는 당연히 클래스를 사용하기 위해 다시 fridge = SmartFridge(5)로 초기 온도 5도로 지정하고 이후에 fridge.get_temperature()와 fridge.cool_down() 메서드를 사용할 수가 있다.

 

여기서 추가로 알아둬야 하는 부분은 온도 조정에 있어서 온도가 떨어질 수도 있음에도 def __adjust_temp(self, change):에 +=만 사용하고 있고 -=는 사용하지 않는다는 점이다. 그 이유는 더하기만 있어도 온도가 떨어지는 걸 음수로 설정이 가능하기 때문이다. 예를 들어서 5+(-5) 이런식으로 음수를 더해주면 결국 온도가 떨어지는걸 설정할 수 있기 때문에 별도의 -=가 필요 없다. 물론 if문을 써서 +의 경우와 -경우를 나눠서 사용해도 상관없다. 다만 효율성이 떨어진다는 점에서 나는 +=만 쓸 것 같다.


 

728x90

댓글