メモリの使用、クロック サイクル、または適切な pythonic スタイルを考慮すると、次のようにすることをお勧めします。
def func():
class A:
x = 10
y = 20
return A
またはこれ
def func():
o = object()
o.x = 10
o.y = 20
return o
または、他の何か?角かっこを使用する必要がないため、辞書を返したくありません。
ここで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
さまざまな種類のアクセスを交換可能な方法で使用できます。
これに対する通常のトリックは、namedtupleを使用することです。
あなたが欲しいように聞こえますnamedtuple(しかし、それは事実上読み取り専用です):
from collections import namedtuple
XYTuple = namedtuple('XYTuple', 'x y')
nt = XYTuple._make( (10, 20) )
print nt.x, nt.y
このようなものにはdictを使用します。ディスクには、すべてのキーを一覧表示するなど、多くの利点があります。