본문 바로가기
Python

파이썬 다형성 우리 집 작은 음악회

by 헬로제이콥 2025. 12. 29.

[실습 문제] 파이썬 다형성을 이용한 "우리 집 작은 음악회" 만들기

목표: 상속과 오버라이딩을 이해하고, 동일한 메서드 이름(소리내기)을 호출했을 때 각 객체가 서로 다른 결과를 출력하는 '다형성'을 구현합니다.

요구사항:

  1. 부모 클래스 생성: 악기라는 이름의 부모 클래스를 만드세요. 이 클래스에는 소리내기라는 메서드가 있으며, 실행 시 "악기는 각자 다른 소리를 내요!"라고 출력해야 합니다.
  2. 자식 클래스 상속 및 재정의(Overriding):
    • 피아노 클래스: 악기를 상속받고, 소리내기 메서드에서 "딩동댕~ 아름다운 피아노 소리!"를 출력하도록 만드세요.
    • 기타 클래스: 악기를 상속받고, 소리내기 메서드에서 "징~ 징~ 신나는 기타 소리!"를 출력하도록 만드세요.
    • 플루트 클래스: 악기를 상속받고, 소리내기 메서드에서 "휘리리릭~ 맑은 플루트 소리!"를 출력하도록 만드세요.
  3. 객체 생성 및 실행:
    • 각 클래스의 인스턴스(우리집_피아노, 내_통기타, 예쁜_플루트)를 하나씩 만드세요.
    • 생성한 각 객체의 소리내기() 메서드를 호출하여 결과를 확인하세요.

[문제 도안] 아래 빈칸을 채워 코드를 완성하세요.

Python
 
# 1. 부모 클래스 '악기' 설계도 만들기
class ________:
    def 소리내기(self):
        print("악기는 각자 다른 소리를 내요!")

# 2. '악기'를 상속받는 '피아노' 클래스 만들기
class 피아노(________):
    def ________(self):
        print("딩동댕~ 아름다운 피아노 소리!")

# 3. '악기'를 상속받는 '기타' 클래스 만들기
class 기타(________):
    def ________(self):
        print("징~ 징~ 신나는 기타 소리!")

# 4. '악기'를 상속받는 '플루트' 클래스 만들기
class 플루트(________):
    def ________(self):
        print("휘리리릭~ 맑은 플루트 소리!")

# 5. 객체(인스턴스) 생성하기
우리집_피아노 = ________()
내_통기타 = ________()
예쁜_플루트 = ________()

# 6. 메서드 호출하기 (다형성 확인)
print("피아노야, 연주해봐!")
우리집_피아노.________()

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

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

print("\n--- 작은 음악회 시작! ---")

 

 

피아노야, 연주해봐!
딩동댕~ 아름다운 피아노 소리!

통기타야, 연주해봐!
징~ 징~ 신나는 기타 소리!

플루트야, 연주해봐!
휘리리릭~ 맑은 플루트 소리!

--- 작은 음악회 시작! ---