Хранение данных, включающих функции - PullRequest
0 голосов
/ 01 мая 2019

У меня есть список типов данных, каждый из которых идентифицируется по имени. Например, «длина» и «вес». Они используются для чтения и записи байтов из файлов. Каждая метрика хранит различное количество байтов, поэтому у меня есть класс Metric, в котором хранится, например, описание и длина байта для метрики. Затем я могу просто сохранить файл JSON или файл XML с определениями метрик, которые можно добавлять в любое время.

Теперь я хочу различить, как эти байты читаются и записываются, добавляя метод to_bytes и from_bytes в класс. Я мог бы сохранить определение функции в виде строки в файле JSON и просто выполнить eval (), или я мог бы написать отдельные дочерние классы для каждой метрики.

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

1 Ответ

0 голосов
/ 01 мая 2019

Вы можете выбрать функцию, как и все:

import pickle

def foo(x):
    return x*x

with open('myfile', 'wb') as f:
    pickle.dump(foo, f)

with open('myfile', 'rb') as f:
    moo = pickle.load(f)

печать (мычание (3))

выход:

9

также работает для всего класса:

import pickle

class MyClass:
    def foo(x):
        return x*x

with open('myfile', 'wb') as f:
    pickle.dump(MyClass, f)

with open('myfile', 'rb') as f:
    LoadedClass = pickle.load(f)

print(LoadedClass.foo(3))

выход:

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