Вот и есть конечный вариант одной из части поставленной перед собой задачи. А основная задача такая:
Вводишь имя продавца, и создается файл базы на него, другая программа берет данные из базы продуктов и и записывает продажу в файл нужного продавца, третья программа считает зарплату. То есть это я так учусь.. сам придумываю задачи. Выполняю все в терминале, PyGTK не освоил, а Windows не пользуюсь.
Окончательный вариант такой:
#!/usr/bin/env python
# coding: utf-8
class Sales: # Имя класса
def __init__(self, name, baseName, percent): # присваиваю классу переменные, что бы потом с ними работать
self.name = name
self.baseName = baseName
self.percent = percent
def get_data(self):
return [dict(zip(("date", "product", "price"), line.split())) for line in open(self.baseName)]
def get_pay(self): #считаю процент от продаж.. к примеру зарплата
all_sales = sum([float(item["price"]) for item in data])
payment = all_sales / 100 * float(self.percent)
print self.name, 'get money ---->', payment, '$'
Dima = Sales('Dima Shvets', 'Dima.txt', '5')
data = Dima.get_data()
Dima.get_pay()
Anton = Sales('Anton Krots', 'Anton.txt', '5')
data = Anton.get_data()
Anton.get_pay()
Вот он и есть конечный вариант одной из части поставленной перед собой задачи.
По сути присоветовать можно было бы.. мне не совсем нравиться что переменную
data нужно объявлять в коде а не классе. Просто
get_data хорош тем что я могу дописать дополнительные функции к данным словаря.. например вывести список проданных продуктов.. Я же смог избавиться от объявления переменной
data только способ создания функции
class Sales: # Имя класса
def __init__(self, name, baseName, percent): # присваиваю классу переменные, что бы потом с ними работать
self.name = name
self.baseName = baseName
self.percent = percent
def get_pay(self):
data = [dict(zip(("date", "product", "price"), line.split())) for line in open(self.baseName)]
all_sales = sum([float(item["price"]) for item in data])
payment = all_sales / 100 * float(self.percent)
print self.name, 'Получит денег ---->', payment, '$'
Но в таком случае то если мне понадобятся другие данные из словаря, мне нужно будет его заново создавать в новой функции… Вот как бы в моем классе с 2-мя функциями объявить переменную
data внутри класса
P.S. еще не плохо было бы использовать базу данных типа anydb но в книге сказано что такое есть.. а как пользоваться нефига не сказано, подскажите в какую сторону Googl-опатой рыть?