Dürüst olmak gerekirse, iç gözlemden başka neredeyse gerçek yaşam kullanımı yok. Çoğu durumda, inspect.getmembers
daha iyi olacaktır (bir jeneratör olmasa da: eğer sınıflarınız bunlardan en az bir sorun olmak için yeterli öznitelikleri varsa)
Fark, inspect.gemembers
sınıf ve örneğini alacağıdır öznitelikleri (ve miras zincirini sonuna kadar yapın), yalnızca örnek öznitelikleri instance.__dict__
'da yaşıyor. Genelde
>>> 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
tuşa bakmak istiyorum oldukça kullanışlı zaman olduğunu kerede dizilerini bir liste haline genişleyen olmadan sözlükte değer girdileri. Bu özel sözlük
çağrıldığında inanılmaz yararlı olmaz.
Ben 'inceleme' hakkında bilmiyordum. :) –