Инициализируйте параметры объекта переменными - PullRequest
0 голосов
/ 04 декабря 2018

Мне нужно вставить табличный объект в базу данных с помощью sqlalchemy.Я создаю как это.

table_entry = Exampletable()
table_entry.key = 'key'
table_entry.date = datetime.today()
table_entry.value = 'value'
dba.session.merge(table_entry)

Это должно было прояснить, почему мне нужны имена этого параметра объекта.У меня есть таблица с 12 столбцами.1 за каждый месяц.Столбцы выглядят так:

MONTH_1

MONTH_2

MONTH_3

MONTH_4

MONTH_5

...

если возможно, я хочу что-то подобное.

table_entry = Exampletable()
table_entry.key = 'key'
month_parameter = ('MONTH_'+str(month))
table_entry.month_parameter = variable #based on another programm

Можно ли инициализировать параметр объекта таким образом?

1 Ответ

0 голосов
/ 04 декабря 2018

Итак, я не обязательно рекомендую вам делать это так (например, было бы гораздо разумнее просто хранить данные в структуре данных, такой как словарь или фрейм данных), но для достижения того, что вы просите,следующее будет работать:

import datetime

class ExampleTable():
    def __init__(self):
        pass

    def set_value_of_current_month(self, value):
        month = datetime.datetime.now().strftime("%m")
        setattr(self, "MONTH_" + month, value)


my_table = ExampleTable()

my_table.set_value_of_current_month(12345)

print(my_table.MONTH_12)

Я использую setattr(...) для достижения этой цели.По сути, my_table.MONTH_12 = 12345 совпадает с setattr(my_table, "MONTH_12", 12345)

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