0

簡単なことを見落としているかもしれませんが、カスタムクラスのインスタンスをPythonの辞書としてキャストしたいのですが(読みやすくするため)、その方法についてはよくわかりません。擬似コードで説明するために、私はこれを実行できるようにしたいと思います。

クラスA:
   #クラスのもの...

a = A()
b = dict(a)

bここで、内に何が含まれるかを定義しましたA。これは可能ですか?

4

2 に答える 2

7

を定義する__iter__と、Just Work(tm) になります。

class A(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __iter__(self):
        return vars(self).iteritems()

与える

>>> A(2,3)
<__main__.A object at 0x101ea70d0>
>>> dict(A(2,3))
{'a': 2, 'b': 3}

そして、あなたは好きなものを返すか譲ることができます。そうは言っても、他の目的にはあまりにも有用であり、これを無駄にする.to_dict()ことはできないため、実際には代わりにメソッドを実装する必要があるというコメントの提案を支持します。__iter__

于 2013-01-21T04:31:51.227 に答える