0

クラス インスタンスの__dict__属性は、特定のオブジェクトをクラス インスタンスにマッピングするのに非常に役立ちdictます (dict のキーがプロセスでクラス インスタンス属性になります)。

例:

>>> class SomeClass(object):
...     def __init__(self):
...         self.numbers = [1, 3, 5, 7, 9]
... 
>>> inst = SomeClass()
>>> inst.__dict__
{'numbers': [1, 3, 5, 7, 9]}
>>> inst.__dict__.update({
...     'letters': ['a', 'b', 'c', 'd'],
...     'numbers': [2, 4, 6, 8, 10]
...     })
>>> inst.letters, inst.numbers
(['a', 'b', 'c', 'd'], [2, 4, 6, 8, 10])

ただし、クラス属性が次のように宣言されている場合、これは機能しません。

>>> class SomeClass(object):
...     numbers = [1, 3, 5, 7, 9]
... 
>>> inst = SomeClass()
>>> inst.__dict__
{}

この場合、それらにアクセスする方法はありますか? つまり、メソッドやデフォルト属性などの他の特別なクラス属性とは別にそれらをリストする方法はありますか?

4

3 に答える 3

1

numbersクラス属性として定義すると、

class SomeClass(object):
    numbers = [1, 3, 5, 7, 9]

それは入れられSomeClass.__dict__ます:

In [5]: SomeClass.__dict__
Out[5]: dict_proxy(
{'__dict__': <attribute '__dict__' of 'SomeClass' objects>,
 '__module__': '__main__',
 '__weakref__': <attribute '__weakref__' of 'SomeClass' objects>,
 'numbers': [1, 3, 5, 7, 9],
 '__doc__': None})
于 2013-04-18T21:24:22.523 に答える