Сохранение различной информации об объекте в легко доступном месте - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать приложение для составления бюджета, которое поможет мне лучше создавать деньги и управлять ими.

Я определил, что мне нужно управлять тремя типами расходов: - Ежедневно (например, транспортные расходы, закуски) - Еженедельные покупки (например, журналы, книги) - Ежемесячные расходы (аренда, коммунальные услуги)

Я написал обобщенный c класс в Python, который может охватить все это, но я хотел бы дать себе более детальную информацию о том, сколько каждый класс расходов обходится мне ежемесячно, и, возможно, выложить это на календарь .

Я хотел бы знать, как я могу реализовать вышеупомянутые типы расходов как классы и сделать так, чтобы все они записывались в общий класс, где их можно сортировать и форматировать в легко идентифицируемые группы как «Ежедневно», «Еженедельно», и «Ежемесячно», но подпадают под общий интерфейс, где я могу суммировать расходы в вышеупомянутой структуре для быстрого просмотра и планирования и т. д. 1017 *.

Есть предложения? Я очень плохо знаком с Python Кодированием - до сих пор эта идея озадачила меня

Код:

class Expenses:

def __init__(self):
    self.list = []


"""Create dict containing expense"""
def add_expense(self, name, cost, describe):
    val = {"Name": name,
           "Cost": cost,
           "Description": describe
           }
    return self.list.append(val)


"""Show all of the expenses contained in the list self.list"""
def list_expenses(self):
    for i in self.list:
        for k, v in i.items():
            print('%s: %s' % (k, v))


"""add up the total of all expenses in self.list"""
def total_expenses(self):
    total = 0
    for i in self.list:
        for k, v in i.items():
            if k == "Cost":
                total += v
    return total


"""remove the given expense
   I should create a key that can be used as an indexer"""
def delete_expense(self, num):
    return self.list.pop(num)

Это работает так, как я этого хочу, - но, как я пытался упомянуть, тоже Я хотел бы добавить больше деталей к этому классу, я использую это, чтобы в основном выучить OOP. Я не против использовать обычный императивный код

1 Ответ

0 голосов
/ 30 апреля 2020

Я серьезно полагаю, что вы задумались над этим, но в любом случае я думаю, что самое простое решение вашей проблемы - это добавление еще одного свойства к вашему root классу.
Это свойство будет определять time_span расходов (либо ежедневно , еженедельно или ежемесячно),
, и тогда вы сможете реализовать такие функции, как daily_expenses(date), weekly_expenses(time_range) или monthly_expenses(datetime_month)
(ваши параметры для диапазонов времени или дат практически бесконечны ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...