본문 바로가기
Python

파이썬 다형성이 뭐였지?

by 헬로제이콥 2025. 5. 14.

다형성이 뭐였지?

똑같은 지시를 내렸는데, 누가 그 지시를 받느냐에 따라 다른 행동을 하는 마법 같은 거라고 했지?

악기 연주 예시:

음악 연주회가 열렸다고 상상해 봐. 지휘자 아저씨가 모든 악기 연주자들에게 "연주 시작!"이라고 똑같이 외쳤어.

  •   피아노 연주자는 피아노를 "딩동댕~" 하고 아름답게 연주할 거야.
  •   기타 연주자는 기타를 "징징징~" 하고 신나게 연주하겠지?
  •   북 연주자는 북을 "둥둥둥!" 하고 힘차게 칠 거야.

지휘자 아저씨는 똑같이 "연주 시작!"이라고 말했지만, 피아노, 기타, 북은 각자 자기만의 소리를 내지? 이것도 다형성이야!

파이썬 코드로 악기 연주 마법을 보자!

Python
 
# 모든 악기가 '소리내기' 재주를 가지고 있다고 알려주는 설계도야.
class 악기:
    def 소리내기(self):
        print("악기는 각자 다른 소리를 내요!")

# '악기' 설계도를 보고 만든 '피아노'
class 피아노(악기):  # 피아노는 악기의 한 종류!
    def 소리내기(self):  # 피아노만의 특별한 소리내기!
        print("딩동댕~ 아름다운 피아노 소리!")

# '악기' 설계도를 보고 만든 '기타'
class 기타(악기):  # 기타도 악기의 한 종류!
    def 소리내기(self):  # 기타만의 특별한 소리내기!
        print("징~ 징~ 신나는 기타 소리!")

# '악기' 설계도를 보고 만든 '플루트'
class 플루트(악기): # 플루트도 악기의 한 종류!
    def 소리내기(self): # 플루트만의 특별한 소리내기!
        print("휘리리릭~ 맑은 플루트 소리!")

# 자, 이제 여러 악기들을 준비해보자!
우리집_피아노 = 피아노()
내_통기타 = 기타()
예쁜_플루트 = 플루트()

# 악기들에게 소리를 내보라고 해볼까?
print("피아노야, 연주해봐!")
우리집_피아노.소리내기()

print("\n통기타야, 연주해봐!")
내_통기타.소리내기()

print("\n플루트야, 연주해봐!")
예쁜_플루트.소리내기()

print("\n--- 작은 음악회 시작! ---")
# 여러 악기를 모아보자.
우리_악단 = [우리집_피아노, 내_통기타, 예쁜_플루트]

for 하나의_악기 in 우리_악단:
    # 똑같이 '소리내기()' 라고 했는데,
    # '하나의_악기'가 피아노일 때, 기타일 때, 플루트일 때 각각 다른 소리가 나!
    # 이것도 다형성 마법이지!
    하나의_악기.소리내기()

코드 설명:

  1. class 악기:: 모든 악기가 공통으로 가질 수 있는 재주인 소리내기()를 정의했어.
  2. class 피아노(악기):, class 기타(악기):, class 플루트(악기):: 각 악기들이 악기의 특징을 물려받고, 자신만의 독특한 소리내기() 방법을 가지도록 만들었어.
  3. 우리집_피아노 = 피아노() 처럼 각 악기들을 실제로 만들었지.
  4. 우리_악단 = [우리집_피아노, 내_통기타, 예쁜_플루트] : 여러 악기를 우리_악단이라는 목록에 함께 담았어.
  5. for 하나의_악기 in 우리_악단: 이 부분에서 마법이 일어나!
    •   하나의_악기.소리내기()라는 똑같은 코드를 사용하는데도,
    •   하나의_악기가 피아노일 때는 피아노 소리가 나고,
    •   하나의_악기가 기타일 때는 기타 소리가 나고,
    •   하나의_악기가 플루트일 때는 플루트 소리가 나지!

이렇게 똑같은 소리내기() 요청에 대해 각 악기가 자신만의 방식으로 연주하는 것, 이것이 바로 다형성이란다! 어때, 재미있지?

'Python' 카테고리의 다른 글

파이썬 파일 CRUD 예제(예외처리 적용)  (0) 2025.05.14
파이썬 예외 처리  (0) 2025.05.14
파이썬 다형성 예제  (1) 2025.05.14
파이썬 상속 예제  (0) 2025.05.14
함수 정의 및 호출  (0) 2025.05.12