-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathbox.py
More file actions
54 lines (39 loc) · 938 Bytes
/
box.py
File metadata and controls
54 lines (39 loc) · 938 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
from dataclasses import dataclass
class Box:
def __init__(self):
raise ValueError('cannot instantiate "Box"')
def count_items(self):
return len(self.items)
def list_items(self):
for item in self.items:
print(str(item))
def empty(self):
raise NotImplementedError()
def add_item(self, item):
raise NotImplementedError()
@dataclass
class Item:
name: str
price: float
class ListBox(Box):
def __init__(self):
self.items = []
def empty(self):
self.items = []
def add_item(self, item):
self.items.append(item)
class DictBox(Box):
def __init__(self):
self.items = {}
def empty(self):
self.items = {}
def add_item(self, item):
self.items[item.name] = item
lb = ListBox()
db = DictBox()
lb.add_item(Item('book', 10.0))
lb.add_item(Item('computer', 999.99))
lb.list_items()
db.add_item(Item('phone', 500.00))
db.add_item(Item('pencil', 1.00))
db.list_items()