0
昨日私はここでいくつかの質問を読んでいたので、私はitem.__dict__.iteritems()
を知りました。 私は、どのように、いつ、なぜそれを使用するのかわかりませんが、私はそれが美しく、ピジョンソニックに見えます。「実使用」のケース項目.__ dict __。iteritems()が使用されていますか?
それで、実際にはどういう意味ですか?
昨日私はここでいくつかの質問を読んでいたので、私はitem.__dict__.iteritems()
を知りました。 私は、どのように、いつ、なぜそれを使用するのかわかりませんが、私はそれが美しく、ピジョンソニックに見えます。「実使用」のケース項目.__ dict __。iteritems()が使用されていますか?
それで、実際にはどういう意味ですか?
正直なところ、イントロスペクションを除いて、実際の使用例はほとんどありません。ほとんどの場合、inspect.getmembers
はより良いでしょう(ジェネレータではありませんが、あなたのクラスに十分な属性があれば問題は本当に少なくなります)
違いはinspect.gemembers
はクラスとインスタンスの両方を取得しますインスタンスの属性のみがinstance.__dict__
に存在するのに対し、継承チェーンのすべての方法で行います。一般的に
>>> class A(object):
... a = 'a'
...
>>> a = A()
>>> a.a
'a'
>>> a.__dict__
{}
>>> a.b = 'b'
>>> a.__dict__
{'b': 'b'}
>>> import inspect
>>> inspect.getmembers(a)
[('__class__', <class '__main__.A'>),
('__delattr__', <method-wrapper '__delattr__' of A object at 0xb774da8c>),
('__dict__', {'b': 'b'}), ('__doc__', None),
('__format__', <built-in method __format__ of A object at 0xb774da8c>),
# Snipped for brevity
# ....
('__subclasshook__', <built-in method __subclasshook__ of type object at 0x87b172c>),
('__weakref__', None), ('a', 'a'), ('b', 'b')]
>>> list(a.__dict__.iteritems())
[('b', 'b')]
、
iteritems
はあなたがキーを見てみたいかなり便利いつでもある、一度にすべてのタプルのリストにそれらを拡大することなく、辞書内の値エントリ。この特定の辞書の
で呼び出されたとき、それは信じられないほど役に立ちません。
私は 'inspect'について知らなかった。 :) –