Python. Класс, Структура, Словарь? - PullRequest
3 голосов
/ 11 февраля 2011

Я разбираю пакет TCP / IP в строковый формат. Каков наилучший способ структурировать и хранить его? Должен ли я хранить его как структуру ctypes, класс python, словарь или как-то еще? Каковы плюсы и минусы каждого метода?

Ответы [ 3 ]

8 голосов
/ 11 февраля 2011

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

Словари имеют более подробный синтаксис для доступа к их содержимому и не позволяют добавлять методы, если они вам нужны.

ctypes isдействительно для доступа к структурам, упакованным для использования в других API.Если ваши данные останутся в Python, единственным преимуществом будет то, что они будут более компактными в памяти.

1 голос
/ 11 февраля 2011

Я большой поклонник подробных требований.

Не имея их, я бы пошел с именным кортежем.

Вы можете делать такие вещи, как thisPacket.srcPort.

После этого вы можете просто засунуть свои пакеты в что-то вроде MongoDB и запросить их позже классными способами

1 голос
/ 11 февраля 2011

Я большой поклонник словарей для подобных вещей, потому что

  1. Вы можете делать такие вещи, как thisPacket ['srcPort']
  2. Затем вы можете просто засунуть ваши пакеты во что-то вроде MongoDB и запросить их позже прохладными способами (то есть дать мне каждый пакет, который поступил на порт 80 и был из какой-то подсети с определенным установленным флагом)
...