Coding for KidsCoding for Kids
창의적인 레벨도전 과제교사 가이드
기능 투표
고급 파이썬 개발 과정
챕터
>
레벨

고급 클래스
슈퍼 함수

목표

슈퍼 함수를 사용하여 객체를 생성함으로써 다양한 고기를 모아 다양한 방식으로 요리하고 서빙하세요.

냉장고에는 이전 레벨에서 기름과 함께 준비한 양파와 함께 요리하고 서빙할 수 있는 다양한 고기들이 있습니다. 이 고기들은 다양한 방식과 온도/희귀도에 맞게 조리할 수 있으며, 이는 이전 레벨과 유사하게 클래스로부터 객체를 생성하는 방식으로 구현할 수 있지만, 슈퍼 함수를 사용하여 향상시킬 수 있습니다.

super() 함수는 메소드 오버라이딩과 유사한 방식으로 사용됩니다. 차이점은, 이 함수를 사용하면 기능을 완전히 덮어쓰는 대신, 부모 클래스의 함수를 자식 클래스 내 자신의 코드와 함께 실행할 수 있다는 점입니다.

# Parent Class class cooked_meat: type = "" def cook_meat(self): player.speak("Cooking the %s meat with oil and onions." % self.type) player.place("meat") player.collect("cooked %s" % self.type) # Child Class class ready_meat(cooked_meat): rarity = "" def cook_meat(self): super().cook_meat() player.speak("The meat is cooked %s" % self.rarity)

자식 클래스 함수 cook_meat() 안에서 super() 함수가 사용됩니다. cook_meat() 함수는 부모 클래스에서도 사용되기 때문에, 일반적으로 사용자 정의 함수는 메소드 오버라이딩으로 인해 상속된 코드를 덮어쓰게 됩니다. 그러나 super() 함수를 사용하면 부모 클래스의 코드와 자식 클래스에 작성한 새로운 코드를 모두 실행할 수 있습니다.

먼저 냉장고로 이동하여 요리에 사용할 4조각의 고기를 수집하세요. 이 4가지 고기는 각각 다른 종류이며, 종류는 : "pork", "beef", "lamb" 그리고 "buffalo" 입니다.

수집한 후, 밝은 X 표시로 이동하여 각 고기 객체들을 생성하고, 각 객체에 대해 요리할 고기의 종류와 희귀도를 설정하세요. 예를 들어:

pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()

희귀도는 고기를 요리할 때 원하는 온도(익힘 정도)를 의미합니다. 각 고기는 다음과 같은 희귀도(익힘 정도)로 요리하세요: "pork"는 "medium", "beef"는 "well done", "buffalo"는 "medium rare", 그리고 "lamb"는 "rare" 입니다. 위 예시와 같이 고기의 종류와 희귀도를 설정한 후, X 표시에서 자식 클래스 함수 cook_meat()를 사용하세요.

고기들이 요리된 후, 노란 카펫 위의 어두운 X 표시로 이동하여 팬트리에서 "salt"와 "pepper"를 collect() 함수로 가져오세요. 그리고 두 재료를 담은 리스트 ingredients를 생성하세요. 예: ingredients = ["salt","pepper"] .

추가 재료들과 함께 테이블 위의 접시를 사용하여 고기를 서빙할 수 있습니다. 요리된 각 고기에 대해 다음과 같은 이름의 리스트를 생성하세요: served_pork, served_beef, served_lamb 그리고 served_buffalo. 예를 들어, 중첩 리스트를 생성하여 요리한 고기와 재료 리스트를 해당 리스트에 추가하세요:

served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)

리스트가 준비되면, 금색 X 표시로 이동하여 카운터 위의 접시들에 고기를 서빙하기 위해 place() 함수를 사용하세요. 상단 금색 X 표시에서는 테이블을 바라보며 served_porkserved_buffaloplace() 하세요. 하단 금색 X 표시에서는 테이블을 바라보며 served_lambserved_beefplace() 하세요. 예를 들어: player.place(served_pork). 모든 고기를 서빙하면 레벨이 완료됩니다.

코드북