-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprototype.py
More file actions
59 lines (38 loc) · 1.04 KB
/
Copy pathprototype.py
File metadata and controls
59 lines (38 loc) · 1.04 KB
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
55
56
57
58
59
from abc import ABC, abstractmethod
import copy
class Menu:
def __init__(self):
self._menudict = {}
def add(self, name, dish_obj):
self._menudict[name] = dish_obj
def remove(self, name):
del self._menudict[name]
def create(self, name):
return self._menudict[name].clone()
class MenuItem(ABC):
def __str__(self):
return self.name
@abstractmethod
def clone(self):
pass
class Spaghetti(MenuItem):
def __init__(self):
self.name = "Спагетти"
def clone(self):
return copy.deepcopy(self)
class Hamburger(MenuItem):
def __init__(self):
self.name = "Гамбургер"
def clone(self):
return copy.deepcopy(self)
menu = Menu()
spaghetti = Spaghetti()
hamburger = Hamburger()
menu.add("spagh", spaghetti)
menu.add("hambu", hamburger)
new_spaghetti = menu.create("spagh")
print(spaghetti, hamburger, new_spaghetti)
print(spaghetti == new_spaghetti)
# output:
# Спагетти Гамбургер Спагетти
# False