0
私は、作成しようとしている古典的なPoint
構造体に相当するものを持っています。Pythonでのメモリ効率のよい構造体表現ですか?
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
はしかし、私はnamedtuplesの余分なオーバーヘッド(例えば長さ、インデックスアクセス、__contains__
など)の(属性名によるアクセス)とどれもまた、私のユースケースにも固定しているタイプの限られた機能が必要になりますPoint.x
とPoint.y
の場合は、静的なタイピングの保証に依存するハッキングがあります。
さらにメモリオーバーヘッドのあるものはありますか?おそらくまたはCython
のソリューションですか?
'__slots__'のカスタムクラスですか? namedtupleの動作を確認することができます:https://github.com/python/cpython/blob/3.6/Lib/collections/__init__.py#L310。 – jonrsharpe
@jonrsharpe 'namedtuple'インスタンスには' __slots__'が付属しています。 –
@EliKorvigoはい、しかし、OPは彼らが望んでいないと言っているものもたくさんあります(インスタンスごとに存在しないので、「オーバーヘッド」の方法ではあまりありませんが)。とにかくそれを示すためのリンクを追加しました。 – jonrsharpe