python高階程式設計(一) 一切皆物件

2021-09-12 10:39:44 字數 1258 閱讀 2395

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 定義乙個類,同樣可以使用這樣的操作,...