python一切皆物件,函式,類一樣可以當物件,可以當做引數,可以當做返回值。
當我們檢視乙個物件的型別時可以用type(obj)來看,而我們知道所有類的基類都是object,而object的型別是什麼呢?
我們輸入type(object) 發現他的型別是type。
我們又想到,object的型別是type,那麼type也應該是乙個類,那麼type的型別是什麼呢?
我們繼續輸入type(type) 可以看見返回值是type。
我們繼續輸入type.__bases__ 返回了object
由此我們可以知道,一切類的基類都是object,而object本身誰都不繼承。所以我們輸入object.__bases__ 返回了乙個
空元組。
總結一下
乙個類(class)的型別都是type ,乙個除了object的類的基類都有object (後面會說乙個例外)
常規的我們都好理解,
下面說下他們幾個的關係:
type的型別同樣是type,type的基類是object
object當然也是乙個類,所以他的型別也是type 但是他是最頂端的類,所以他沒有父類。
1. none全域性只有乙個
2. 數值型別:int, float,complex(複數),bool
3. 迭代型別
4. 序列型別:list,range,tuple,str,array
5. 對映型別:dict
6. 集合型別:set
7. 上下文管理型別(with)
重點說下none 也就是上面說的例外,我們知道none是乙個常量,全域性只有乙個,我們可以把它賦值給任何型別,但是他自己的型別是』nonetype』,我們通過type(none)可以知道。
nonetype這個型別是搜尋不到的,我們用nonetype.bases告訴我們nonetype沒有被定義,用type(nonetype)也是同樣的error.所以我們記住nonetype雖然也是個類,但是它是與其他類不一樣的。
那麼我們可能會在程式設計中遇到這個型別,如果想處理這個型別的我們想到的是 type(obj)==nonetype 就像type(int)==type一樣會返回true。
但是由於nonetype 沒有被定義 我們這樣會報錯的,所以我們不能這樣判斷,但是因為nonetype型別的物件只有none乙個 所以我們遇到這個型別的時候直接判斷值是否為none就好了。如obj == none
python 一切皆物件
在python中有一句話 一切皆物件 其實在剛開始接觸python的時候對這句話完全不理解,即使是看完了python基礎教程也沒有很好的理解這句話的含義。直到看了python的原始碼才對這部分有了更深入的理解。我的入門指導書是 python原始碼剖析深度探索動態語言核心技術 在python中下列語句...
Python 一切皆物件
學習筆記 class dxiang def ff self print 這是物件的方法 one方法 def common canshu 定義乙個方法在類之外 print 這是乙個普通的方法的引數 canshu common 2 呼叫函式方法 dxiang.method common 類的方法增加乙個...
python中一切皆物件
動態語言和靜態語言的區別 函式和類也是物件,屬於python的一等公民 特性 定義乙個函式,並把這個函式賦值給乙個變數,此時這個變數可以作為乙個函式使用 defask name bobby print name my func ask my func bobby 定義乙個類,同樣可以使用這樣的操作,...