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

고급 클래스
메서드 오버라이딩

목표

재정의된 메서드를 가진 객체들을 생성하여 고기를 요리하기 위해 기름을 병에 담으세요.

채소 요리에 사용할 수 있는 기름이 있습니다. 사용의 편의를 위해 먼저 병에 담아야 합니다. 클래스와 객체 생성을 사용하는 것은 이전 레벨에서와 같이 이를 달성하는 효과적인 방법입니다. 그와 동시에 클래스 내에서 상속을 보다 효과적으로 활용하는 방법도 있습니다. 예를 들어, child 클래스가 parent 클래스의 함수를 재정의하는 방식입니다.

# Parent Class class oil_bottle: label = "" async def label_bottle(self): await player.read() # Child Class class fill_bottle(oil_bottle): def fill_bottle(self): player.place("empty bottle") player.collect("oilbottle") async def label_bottle(self): await player.write(self.label)

위 코드에서 child 클래스는 parent 클래스의 label_bottle() 함수를 재정의하여 병의 라벨을 다시 작성합니다. 이를 통해 async 함수를 사용해 맞춤 메시지를 설정할 수도 있습니다.

먼저, 현장에 있는 빈 병 4개를 모두 가져오세요. 수집한 후 어두운 X 표시로 이동하여 클래스를 사용해 객체들을 생성하세요.

병에 담아야 할 기름은 네 가지이며, 이는 기계 앞에 있는 색깔 카펫에 대응됩니다: olive_oil은 노란 카펫, avocado_oil은 초록 카펫, canola_oil은 파란 카펫, 그리고 vegetable_oil은 빨간 카펫에서 병에 담깁니다.

각 기름에 대한 객체를 생성하고 라벨을 작성한 후, child 클래스의 함수 label_bottle()fill_bottle()을 활성화하세요. 예를 들어:

olive_oil = fill_bottle() olive_oil.label = "Olive Oil" olive_oil.label_bottle() olive_oil.fill_bottle()

각 라벨에는 다음과 같이 각 기름의 이름이 대문자로 포함되어야 합니다: "Olive Oil", "Avocado Oil", "Canola Oil" 및 "Vegetable Oil".

기름을 병에 담은 후, 자루 앞의 밝은 X 표시로 이동하여 collect() 함수를 사용해 자루에서 "onion"을 가져오세요. 이후 금색 X 표시로 이동하여, 기름을 사용해 양파를 요리합니다. 이때 두 재료를 함께 ingredients 리스트에 저장하세요. 예: ingredients = ["Olive Oil", "onion"]. place() 함수를 사용하여 리스트를 전달함으로써 재료들을 요리하세요.

마지막으로 남은 기름들을 oils 리스트에 배치하세요. 예: oils = ["Avocado Oil","Canola Oil","Vegetable Oil"]. 보라색 카펫 위의 밝은 X 표시로 이동하여, 캐비닛을 향한 상태에서 place() 함수를 사용해 캐비닛에 해당 아이템들을 보관하고 레벨을 완료하세요.

코드북