As mentioned on SE可以通過dir(someObject)
或someObject.__dict__
獲得對象的所有可迭代屬性。 如何獲得不可迭代的屬性?某些庫(如Reqests)會返回具有不可迭代屬性的對象。打印對象的所有不可迭代屬性
0
A
回答
2
這是不可能列出所有在所有情形下可靠地屬性,該屬性可以在運行時使用__getattr__
或__getattribute__
定義一個簡單的事實。
例如,以下職業有50%的機會創建一個新屬性或提高AttributeError
。
import random
class AttributeGenerator(object):
def __getattr__(self, attr):
if random.random() < 0.5:
setattr(self, attr, None)
return getattr(self, attr)
else:
raise AttributeError(attr)
唯一的通用功能,從一個實例得到的屬性是dir()
和vars()
。
注意dir()
默認組合由__dict__
,__slots__
得到的結果和類__dict__
等類可以重新定義如何在他們的情況下dir()
作品通過定義__dir__
方法,但是我從來沒有見過它用。 如果此方法存在,你可以簡單地做「隱藏」了一些因爲某些原因屬性 類似:
attributes = list(object.__dict__.keys()) + list(obj.__slots__) + list(type(obj).__dict__)
(用適當的錯誤檢查!),以獲取默認的dir()
輸出。
這就是說,如果您對某個特定的庫感興趣,那麼可能會有一些特定於該庫的方法可靠工作。
1
import pprint from pprint
pprint (vars(<object name>))
相關問題
- 1. 如何迭代並打印Spring Environment對象的屬性
- 2. 迭代對象的屬性
- 3. PLSQL迭代對象屬性
- 4. 如何迭代C#中的對象的所有屬性?
- 5. 如何迭代對象原型鏈中的所有屬性?
- 6. ActionScript2的性能:迭代對象屬性
- 7. 不會打印對象屬性
- 8. 如何在javascript中打印對象中所有屬性的值?
- 9. 打印一個對象的所有隱藏屬性
- 10. 如何打印出對象的所有屬性
- 11. 無法打印列表「int」對象不可迭代
- 12. 在Javascript對象中打印所有屬性
- 13. 迭代通過對象的數組,並打印出的屬性值
- 14. 迭代對象的屬性(在Realm中,或者可能不是)
- 15. 迭代對象的屬性knockoutjs
- 16. 迭代對象屬性的Javascript方法
- 17. 使用的類屬性迭代對象
- 18. 迭代JavaScript對象屬性的順序?
- 19. 迭代python中的對象屬性
- 20. 的Perl:打印對象屬性
- 21. 迭代列表中的所有屬性
- 22. AttributeError:'模塊'對象沒有屬性'可打印'
- 23. Beautifulsoup extracking屬性類型錯誤:「NoneType」對象不是可迭代
- 24. 打印類中的所有屬性
- 25. 如何迭代對象數組並打印出其中一個屬性
- 26. 'MyModel'對象不可迭代
- 27. python'NoneType'對象不可迭代
- 28. 對象不是可迭代
- 29. TypeError對象不可迭代
- 30. datetime.date對象不可迭代
謝謝Monty。但是,不可迭代的屬性不會暴露在'vars()'中。 – dotancohen