Mini-proyek Bagian 6: Sistem Inventori
Proyek ini menggunakan bab 26 dan 27: class, __init__,
instance method, dan inheritance. Item dan
Inventory mengelola tas berisi loot.
Apa yang dibangun
Dua class dalam satu file modul:
Item — satu benda yang bisa
dikumpulkan.
Item(name, weight, value)— constructor.- Field:
name(string),weight(angka),value(angka). describe()— ringkasan satu baris, misalnya"sword (3.5kg, 50g)".
Inventory — wadah untuk item-item.
Inventory()— constructor; dimulai dengan list kosong.- Field:
items(list dari instanceItem). add(item)— menambahkan sebuah item.remove(name)— menghapus item pertama dengan nama itu; mengembalikannya, atauNonejika tidak ada yang cocok.list()— mencetakdescribe()setiap item di barisnya sendiri, lalu footer total.total_weight()— jumlah semua berat.total_value()— jumlah semua nilai.
main.py:
- Membuat beberapa item.
- Membuat inventori dan menambahkannya.
- Menampilkan daftar inventori.
- Menghapus satu item berdasarkan nama.
- Menampilkan daftar lagi.
- Mencetak total berat dan nilai sebagai ringkasan.
Contoh output:
Inventory (3 items):
- sword (3.5kg, 50g)
- shield (5.0kg, 30g)
- potion (0.2kg, 5g)
Totals: 8.70kg, 85g
(removed sword)
Inventory (2 items):
- shield (5.0kg, 30g)
- potion (0.2kg, 5g)
Totals: 5.20kg, 35g
Tata letak file
Dua file. Seperti pada Bagian 5, cd ke folder proyek
terlebih dahulu:
cd projects/05-inventory/starter
python main.py
File (di dalam starter/ dan finished/):
inventory.py— mendefinisikanItemdanInventorysebagai class Python. Kedua class ada di level atas; tidak diperlukan langkah ekspor khusus.main.py— mengimpor kedua class dan menjalankan skenario:from inventory import Item, Inventory
Petunjuk
- Kedua class menggunakan
__init__untuk mengatur field-fieldnya diself. Inventory.remove(name)menelusuriself.itemsdenganenumerateuntuk mencarinameyang cocok, laluself.items.pop(i)menghapusnya.- Gunakan f-string untuk baris total di
Inventory.list:f"Totals: {self.total_weight():.2f}kg, {self.total_value()}g". Item.describebisa mengembalikan string alih-alih mencetaknya, sehinggaInventory.listyang mengontrol bagaimana setiap baris ditampilkan.
Yang boleh digunakan
Apa pun dari Bagian 2-6: variable, alur kontrol, function, module, list, dict, class, method.
Selesai?
Ketika skenario berjalan bersih dari main.py, kamu sudah
selesai. Selanjutnya: Bab 31 — Dari Python
ke platform lain.