Я реализовал этот пример обычным способом, но я хочу сделать это с концепцией OPPS с Python, так как это сделать. Я сталкиваюсь с трудностями при использовании упс.
например.
Укажите количество продуктов, которые компания приобрела у разных поставщиков в порядке возрастания на основе даты. Если один и тот же продукт приобретен у того же поставщика в ту же дату, он должен быть объединен во время выпуска.
sample output
------
Supplier A
01-01-2019 Product A 10
02-02-1019 Product B 5
03-03-2019 Product A 15
Supplier B
01-01-2019 Product A 8
31-01-2019 Product B 20
Классы использования и объекты использования - Поставщик, Компания, Продукт
Я сделал это обычным способом (программа внизу), но я хочу сделать это, используя концепцию чистого упса и используя объект Product .. and Supplier .. .., как это сделать ??
from itertools import groupby
from operator import itemgetter
class Product:
#init
def __init__(self, date=0, product_name=0,qty=0,supplier=0):
self.product_name = product_name
self.date = date
self.qty = qty
self.supplier= supplier
#make self.my_dict
self.my_dict={}
self.my_list = []
def purchase(self, date, product_name, qty, supplier_name ):
self.my_list.append([supplier_name,date,product_name,qty,])
'''
#make a new key if needing
try:
#add the data to the list
self.my_dict[supplier_name].append([date,product_name,qty])
except:
#make a new list with data
self.my_dict[supplier_name] = [[date,product_name,qty]]
'''
def calculation(self):
# sort by supplier_name and group items by supplier_name,
date, product_name
x = groupby(sorted(self.my_list, key=itemgetter(0)), itemgetter(slice
(None, 3)))
# sum the quantities
y = [i + [sum(map(itemgetter(3), j))] for i, j in x]
# group items by supplier
z = [(i, list(map(itemgetter(slice(1, None)), j))) for i, j in groupby
(y, itemgetter(0))]
# output
for supplier, values in z:
print("{0}:".format(supplier))
print("\n".join(map(str, values)))
choice=None
p=Product()
while True:
choice=int(input("1 for the add record\n2 For the display result.\n"))
if choice == 1:
product_name=input("Enter the product name\n")
qty = int(input("Enter the qty.\n"))
date= input("Enter the date")
supplier_name = input("Enter the supplier name.\n ")
p.purchase(date,product_name,qty, supplier_name)
elif choice == 2:
p.calculation()