1. 程式人生 > >2 python 中一切皆物件

2 python 中一切皆物件

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 語句)
其他...(模組,函式等等。。。)

@@