Обработка пользовательских данных более упорядоченным и эффективным способом - PullRequest
0 голосов
/ 12 марта 2020

Я переоснащаю движок для симуляции, которую программирую. Проблема в том, что существует огромное количество данных, передаваемых между многими объектами, которые в конечном итоге сериализуются.

Способ, которым я его запрограммировал, прежде чем я решил go вперед и переписал все это было с переменными класса ( то есть Clock.time, Clock.format, et c.). Я понимаю, что это «плохое» программирование, и вместо этого я держу словарь словарей, который облегчает сериализацию. У меня проблема в том, что в результате получается код, похожий на этот беспорядок:

import save_data
def example_of_an_object(branch, data, input):
    if not data['python']['foo']: return branch, data, "False."
    else:
        if not branch['leaf']:
            branch.update({'leaf' : '1'})
            print("{} is on leaf {}".format(data['user']['name'], branch['leaf']))
        elif branch['leaf'] == "1":
            if data['python']['foo'] == "Hello":
                data.update('python':{'foo': "bye"})
                save_data.shelving(data['python'])
                print("Good Bye")
        else: pass
        return branch, data, input

Есть ли лучший способ для представления этих данных? Обратите внимание, что иногда в одном объекте используется несколько дочерних словарей, иногда только один, поэтому я стараюсь сделать все как можно более однородным (насколько это возможно для атрибутов go).

1 Ответ

1 голос
/ 12 марта 2020

Не нужно быть pythoni c:

Select = { # use the branch['leaf'] value to get the statement and execute it.
    False:'''Your statement''',
    "1":'''another statement'''
}

def object(branch, data, input):
    if Select.get(branch['leaf']):
        exec(Select[branch["leaf"]])
    return branch, data, ("False." if not data['python']['foo'] else input)

Простой пример:

Select = {
    False:'''

if True:
    print("Yes")

''',
}

exec(Select[False])
...