108

私は__dict__属性について本当に混乱しています。私はたくさん検索しましたが、それでも出力についてはわかりません。

オブジェクト、クラス、または関数で使用される場合、誰かがゼロからこの属性の使用を説明できますか?

4

1 に答える 1

107

基本的に、問題のオブジェクトを説明するすべての属性が含まれています。属性の変更または読み取りに使用できます。のドキュメントからの引用__dict__

オブジェクトの (書き込み可能な) 属性を格納するために使用されるディクショナリまたはその他のマッピング オブジェクト。

Python ではすべてがオブジェクトであることを忘れないでください。私がすべてを言うとき、私は関数、クラス、オブジェクトなどのようなすべてを意味します(あなたは正しく読んでいます、クラス。クラスもオブジェクトです)。例えば:

def func():
    pass

func.temp = 1

print(func.__dict__)

class TempClass:
    a = 1
    def temp_function(self):
        pass

print(TempClass.__dict__)

出力します

{'temp': 1}
{'__module__': '__main__', 
 'a': 1, 
 'temp_function': <function TempClass.temp_function at 0x10a3a2950>, 
 '__dict__': <attribute '__dict__' of 'TempClass' objects>, 
 '__weakref__': <attribute '__weakref__' of 'TempClass' objects>, 
 '__doc__': None}
于 2013-11-11T13:24:25.163 に答える