Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ
Các lớp nâng cao
Hàm Siêu
Mục tiêu
Thu thập các loại thịt khác nhau rồi nấu và trình bày chúng theo cách khác nhau bằng cách tạo đối tượng với các hàm super.
Trong tủ lạnh có các loại thịt khác nhau mà bạn có thể nấu và trình bày cùng với hành tây mà bạn đã chuẩn bị với dầu ở cấp độ trước. Các loại thịt có thể được nấu theo nhiều cách và đạt đến các mức nhiệt độ/độ chín khác nhau, bạn có thể thực hiện điều này bằng cách tạo đối tượng từ các lớp, tương tự như các cấp độ trước nhưng có thể được nâng cao bằng Super Functions.
Hàm super() được sử dụng theo cách tương tự như việc ghi đè phương thức, điểm khác biệt là bằng cách sử dụng hàm này, bạn có thể chạy hàm của lớp cha bên cạnh mã của riêng bạn trong lớp con thay vì ghi đè hoàn toàn hàm đó.
# 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)
Bên trong hàm class của lớp con cook_meat(), hàm super() được sử dụng. Vì cook_meat() cũng là một hàm được sử dụng trong lớp cha, hàm tùy chỉnh này thường ghi đè đoạn mã được thừa hưởng do method overriding, nhưng bằng cách sử dụng hàm super() bạn có thể thực thi cả đoạn mã trong lớp cha cũng như đoạn mã mới mà bạn viết trong lớp con.
Đầu tiên, hãy đi đến tủ lạnh và thu thập bốn (4) miếng thịt mà bạn sẽ sử dụng để nấu. Mỗi trong số bốn (4) loại thịt là một loại khác nhau, đó là: "pork", "beef", "lamb" và "buffalo".
Khi đã thu thập, hãy đi đến dấu X ánh sáng và tạo đối tượng của từng loại thịt để nấu chúng, và đối với mỗi đối tượng thịt, đặt kiểu thịt và độ chín (rarity) mà bạn muốn nấu, ví dụ:
pork_meat = ready_meat() pork_meat.type = "pork" pork_meat.rarity = "medium" pork_meat.cook_meat()
Rarity là nhiệt độ nấu mà bạn muốn đạt được cho thịt, hãy nấu các loại thịt đạt đến các mức độ chín sau: "pork" nấu ở "medium", "beef" nấu ở "well done", "buffalo" nấu ở "medium rare", và "lamb" nấu ở "rare". Tại dấu X, hãy sử dụng hàm cook_meat() của lớp con sau khi đã đặt kiểu và độ chín của thịt như được chỉ ra trong ví dụ ở trên.
Sau khi các loại thịt đã được nấu, hãy đi đến dấu X tối trên tấm thảm màu vàng và sử dụng hàm collect() để lấy cả "salt" và "pepper" từ phòng chứa đồ ăn. Tạo một danh sách có tên ingredients và thêm vào danh sách đó hai nguyên liệu vừa thu thập, như sau: ingredients = ["salt","pepper"].
Với các nguyên liệu bổ sung, bây giờ bạn có thể trình bày thịt cùng với đĩa trên bàn. Tạo một danh sách cho mỗi loại thịt đã nấu với các tên sau: served_pork, served_beef, served_lamb và served_buffalo. Thêm vào những danh sách này các loại thịt đã nấu cùng với danh sách nguyên liệu bằng cách tạo một nested list, ví dụ:
served_pork = [] served_pork.append("cooked pork") served_pork.append(ingredients)
Khi các danh sách đã được thiết lập, hãy đi đến các dấu X màu vàng và sử dụng hàm place() để trình bày thịt lên các đĩa có trên quầy. Tại dấu X vàng trên cùng, khi đối mặt với bàn, hãy place(): served_pork và served_buffalo. Tại dấu X vàng dưới cùng, khi đối mặt với bàn, hãy place(): served_lamb và served_beef. Ví dụ: player.place(served_pork), khi tất cả các loại thịt đã được trình bày, bạn sẽ hoàn thành cấp độ.