Pythonで構造をサポートする方法はありますか?通常のキーワードstructをサポートしていませんか?
例:
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
これをpython構造体に変換するにはどうすればよいですか?
属性の順序付けは (クラスを構築するために anOrderedDict
または something が使用され__prepare__
たり、別の方法で構築されたりしない限り) 必ずしも定義の順序ではないため、実際の C と互換性を持たせたい場合、struct
またはデータが何らかの順序であることに依存する場合は、次のようになります。使用できるはずのベース ( を使用ctypes
)。
from ctypes import Structure, c_uint
class MyStruct(Structure):
_fields_ = [
('dist', c_uint * 20),
('from', c_uint * 20)
]
@Abhishek-ヘルレ
私があなたの状況にあったとしたら、Python の Struct モジュールに頼るかもしれません。
同様に、あなたの場合、C構造は次のとおりです。
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
したがって、ここでの基本的な考え方は、C-Structure を python に、またはその逆に変換することです。上記の c-structure は、以下の Python コードで大まかに定義できます。
s = struct.Sturct('I:20 I:20')
さて、この構造体に値をパックしたい場合は、以下のようなことができます。
dist = [1, 2, 3....20]
from = [1, 2, 3....20]
s.pack(*dist, *from)
print s #this would be binary representation of your C structure
もちろん、s.unpack メソッドを使用してアンパックすることもできます。
空のクラスでも次のようになります。
In [1]: class Node: pass
In [2]: n = Node()
In [3]: n.foo = [1,2,4]
In [4]: n.bar = "go"
In [8]: print n.__dict__
{'foo': [1, 2, 4], 'bar': 'go'}
In [9]: print n.bar
go