как определить структуру, как в 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 HMAC: TypeError: отображение символов должно возвращать целое число, None или unicode
  • Как проверить все элементы списка в python равны?
  • Удаленная отладка на pycharm
  • Подход к анализу файла и создание динамической структуры данных для использования другой программой
  • Перемещение и изменение древовидного списка структуры dict
  • Петля внутри цикла - python
  • соединить список списков надлежащим образом
  • Python - лучший язык программирования в мире.