2 python 中一切皆物件
阿新 • • 發佈:2019-02-02
python 中一皆物件
在 python 程式語言中所有的一切都是物件 , python 語言相對於 C++ 或 java 這樣的語言 (靜態語言), 面向物件這個思想更加的徹底。
2.1 函式和類也是物件 , 屬於python的一等公民
1.賦值給一個變數
2.可以新增到集合物件中
3.可以作為引數傳遞給函式
4.可以當作函式的返回值 (裝飾器的原理)
1.賦值給一個變數
def ask(name="bobby"): print(name) my_func = ask my_func("bobby") # 我們可以得到輸出結果 bobby class Person: def __init__(self): print("bobby") my_cls = Person my_cls() # 通過這段程式碼我們依然可以得到輸出結果 bobby # 說明了函式和類都是物件,是一等公民
2. 可以新增到集合物件中
def ask(name = "hello"): print(name) class Person: def __init__(self): print("bobby") obj_list = [] obj_list.append(ask) obj_list.append(Person) for item in obj_list: item() # 在這段程式碼中我講ask 和 Person 加入到了list中隨後迭代list中的每一個元素並且呼叫這個元素, # 如此以來得到輸出結果 hello bobby # 注:函式如果沒有返回值 , 那麼會預設返回None
2.2 type , object , class 的關係
type 的用法
1.生成一個類
2.返回一個物件的型別
可以發現
1 是一個整型
int 又是由 type 來生成的
更一般的我們就得到 type -> class -> obj (type 生成 class , class 生成 obj 物件)
object 是最頂層的基類 , 所有的類推導最頂層都繼承自 object 類
重點:
type 是一個類 , 同時 type 也是一個物件 ,
2.3 python 中的內建型別
物件的三個特徵 : 1.身份(使用id函式) 2. 型別 3.值 None (全域性只有一個) 數值 (int , float , complex , bool) 迭代型別(可以用for遍歷) 序列型別(可以切片 bytes bytearray memoryview(二進位制序列) , range , tuple , str ,array) 對映(dict) 集合 (set , frozenset) 上下文管理器(with 語句) 其他...(模組,函式等等。。。)
@@