как определить структуру, как в C

Я собираюсь определить структуру и передать ее в функцию:

В C:

struct stru { int a; int b; }; s = new stru() s->a = 10; func_a(s); 

Как это можно сделать в Python?

5 Solutions collect form web for “как определить структуру, как в C”

Если в вашей ситуации нет ничего особенного, что вы нам не говорите, просто используйте что-то вроде этого:

 class stru: def __init__(self): self.a = 0 self.b = 0 s = stru() sa = 10 func_a(s) 

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

 import collections struct = collections.namedtuple('struct', 'a b') s = struct(1, 2) 

В противном случае просто определите класс, если вы хотите иметь более одного.

Словарь – это еще одно каноническое решение.

Если вы хотите, вы можете использовать эту функцию для создания изменяемых классов с тем же синтаксисом, что и namedtuple

 def Struct(name, fields): fields = fields.split() def init(self, *values): for field, value in zip(fields, values): self.__dict__[field] = value cls = type(name, (object,), {'__init__': init}) return cls 

вы можете добавить метод __repr__ для полноты. назовите его как s = Struct('s', 'a b') . s – это класс, который вы можете создать как a = s(1, 2) . Там есть много возможностей для улучшения, но если вы окажетесь так много, это будет самоценным.

Извините, ответьте на вопрос через 5 дней, но я думаю, что это гарантирует.

Используйте модуль ctypes следующим образом:

 from ctypes import * class stru(Structure): _fields_ = [ ("a", c_int), ("b", c_int), ] 

Когда вам нужно сделать что-нибудь C-like (например, C-типы данных или даже использовать C DLL), ctypes – это модуль. Кроме того, он поставляется стандартно

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

Если вам нужна структура, как она хранится в памяти, попробуйте модуль struct

(для будущих поисковиков Google): самый способ выполнения C / C ++ – использовать класс без конструктора:

 class my_struct: name = '' health = 0.0 count = 0 values_list = [1,2,3] s1 = my_struct() s1.count = 5 s1.name = 'some string' s1.health = 0.1 s1.values_list = [4,5,6] print s1.name # some string 
  • Изменение монеты Python SO CLOSE
  • python для входа на веб-страницу
  • Построение случайной строки
  • загрузка модулей с помощью imp.load_source с тем же именем, что приводит к слиянию модулей
  • Изменить приоритет процесса в Python, кросс-платформенную
  • Простой сервер UDP Python: проблема с получением пакетов от клиентов, отличных от localhost
  • Что такое «Отображение символов типаError должно возвращать целое число ...» в этом коде python?
  • python read next ()
  •  
    Interesting Posts for Van-Lav

    Загрузка общей таблицы Google в Pandas

    Как назначить / обновить подмножество общей переменной тензора в Theano?

    Правильный способ попробовать / кроме использования модуля запросов Python?

    Можно ли «перевести» сеанс между selenium.webdriver и request.session

    Оценка математического выражения (функции) для большого количества входных значений быстро

    Twisted adbapi: runInteraction last_insert_id ()

    ImportError: переменная среды DjANGO_SETTINGS_MODULE не определена

    Выполнение многострочных операторов Python в однострочной командной строке

    Python: перетасовка списка, но сохранение некоторых элементов замороженных

    учебник flaskr; не может импортировать flaskr (инициализировать базу данных)

    Flask-SQLAlchemy: несколько фильтров через одно отношение

    Подробные сведения о файлах Python

    В Matplotlib, что означает этот аргумент в fig.add_subplot (111)?

    Как я могу войти в систему произвольного пользователя в appengine для использования с SDK накопителя?

    Удаление определенной строки в файле (python)

    Python - лучший язык программирования в мире.