Уменьшение одинаковых строк кода - Python
Всем привет, у меня есть 6 строчек следующего типа:
brickQuantity -= int (quantityOfProducts)
brickQuantityText = open ("source/brickQuantity.txt", "w")
brickQuantityText.write (str (brickQuantity))
brickQuantityText.close ()
clear ()
print (" Товар: Товар1 в размере \'" + str (quantityOfProducts) + "\' успешно куплено...")
И у меня будет таких 6 строчек допустим написано десять раз, а в них будет все одинаковые
кроме двух слов, (brickQuantity , brickQuantityText), и я пробовал создавать класс
и в нем был конструктор следующего типа:
class Product:
ThisQuantityOfProducts = brickQuantity
FileQuantityOfProducts = brickQuantityText
def set (self, ThisQuantityOfProducts, FileQuantityOfProducts):
self.ThisQuantityOfProducts = ThisQuantityOfProducts
self.FileQuantityOfProducts = FileQuantityOfProducts
И дальше я не понимаю как мне написать в классе те 6 строчек, что бы я потом к коде создавал новые
обьекты над основе этого класс, и через функцию set, было исполнено те 6 строчек но с
другими этими двумя словами, буду рад за подсказки
Ответы (2 шт):
Не понял до конца, что нужно, но код, если нужен класс, можно к такому виду привести:
class Product:
def __init__(self):
self.brick_quantity = {}
def add_brick_quantity(self, quantity: int, filename: str = 'brickQuantity.txt'):
self.brick_quantity[max(self.brick_quantity.keys() or [0, ]) + 1] = quantity
with open(filename, 'a') as file:
file.write(f'{quantity}\n')
print (f"Товар: Товар1 в размере '{quantity}' успешно куплено...")
prod = Product()
prod.add_brick_quantity(10)
prod.add_brick_quantity(20)
prod.add_brick_quantity(30)
print(prod.brick_quantity)
В self.brick_quantity храним все brick_quantity со своим id, а на каждом вызове add_brick_quantity() добавляем в словарь новые данные по числу. Параллельно отписываем в текстовик нужные данные.
Можно более-менее универсальную функцию написать. Хотя, наверное, лучше куда-то в сторону классов смотреть:
def buy_product(somethingQuantity, somethingQuantityText, somethingQuantityFile, quantityOfProducts):
somethingQuantity -= int (quantityOfProducts)
with open (f"source/{somethingQuantityFile}.txt", "w") as f:
f.write (str (somethingQuantity))
clear ()
print (f" Товар: {somethingQuantityText} в размере {quantityOfProducts} успешно куплено...")
return somethingQuantity
brickQuantity = buy_product(brickQuantity, "Кирпичи", "brick", brickQuantityOfProducts)
boardQuantity = buy_product(boardQuantity, "Доски", "board", boardQuantityOfProducts)
...