我來自一個堅實的Java(和Matlab)背景,並且最近一直試圖自學Python(3.4)。在Java API文檔(http://docs.oracle.com/javase/7/docs/api/)中,特定類的文檔始終顯示該類祖先的完整概述(請參閱,例如this screenshot)。如何獲得類型/類的Python層次結構的概述?
現在我想知道是否有任何方法查看Python類的類似祖先層次結構。我的工作假設是,由於Python是一種面向對象的語言,所有非原始類型都將是對象(請糾正我,如果我錯了)。瞭解不同類型的祖先應該可以大大幫助我理解可迭代,序列,視圖和列表。
我已經嘗試了幾件事情,正如對類似問題的回答(如here)中的建議;但inspect.mro(cls)
似乎並不總是工作;例如,下面給出了一個錯誤:
inspect.getmro(dict_keys)
即使dict_keys是一種類型:
In[30]: type({}.keys()) Out[30]: dict_keys
我也非常驚訝地得知,列表不會從迭代繼承:
In[34]: inspect.getmro(list) Out[34]: (list, object)
所以,雖然我的問題主要是如何查看(並且理想地瀏覽)標準Python庫的層次結構,關於如何理解默認類型層次結構的任何其他評論,主要是列表/序列/視圖/ iterables如何正式關聯,也是非常受歡迎的。看起來,(另外優秀的)Python教程並沒有真正涵蓋這個東西。
* Python中的所有內容都是一個對象。 – Ffisegydd 2014-11-05 16:26:55
是的,@Ffisegydd,這正是我工作的假設:)然而,爲什麼'type({}。keys())'產生'dict_keys',但做'dict_keys'產生'name dict_keys沒有被定義'... – EelkeSpaak 2014-11-05 16:31:56
概述在https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy – 2014-11-05 21:08:16