1

メモリの使用、クロック サイクル、または適切な pythonic スタイルを考慮すると、次のようにすることをお勧めします。

def func():
    class A:
       x = 10
       y = 20
    return A

またはこれ

def func():
    o = object()
    o.x = 10
    o.y = 20
    return o

または、他の何か?角かっこを使用する必要がないため、辞書を返したくありません。

4

6 に答える 6

9

ここでdict見つけたサブクラスを作成する特別な方法を使用するのが好きです。次のようになります。

class Struct(dict):
    """Python Objects that act like Javascript Objects"""
    def __init__(self, *args, **kwargs):
        super(Struct, self).__init__(*args, **kwargs)
        self.__dict__ = self

このオブジェクトは次のように使用できます。

o = Struct(x=10)
o.y = 20
o['z'] = 30
print o.x, o['y'], o.z

さまざまな種類のアクセスを交換可能な方法で使用できます。

于 2012-07-20T11:07:04.073 に答える
4

これに対する通常のトリックは、namedtupleを使用することです。

于 2012-07-20T11:04:45.867 に答える
3

あなたが欲しいように聞こえますnamedtuple(しかし、それは事実上読み取り専用です):

from collections import namedtuple

XYTuple = namedtuple('XYTuple', 'x y')
nt = XYTuple._make( (10, 20) )

print nt.x, nt.y
于 2012-07-20T11:07:48.220 に答える
2

このようなものにはdictを使用します。ディスクには、すべてのキーを一覧表示するなど、多くの利点があります。

于 2012-07-20T10:59:10.927 に答える