第三章:類型與對象——參考手冊筆記

對象python

構造角度數據結構

基本數據結構(使用相應的字面量)函數

自定義對象(使用構造器或其餘構造模式)spa

 

組成角度orm

程序中存儲的數據對象

包含:數據(複合)排序

   屬性:標識,地址/引用,類型,值繼承

 

實例被建立後,標識類型不可改變遞歸

對象是類型的實例接口

類型:對象的內部表示 (屬性)與 支持的方法

 

可變對象:值可改變

不可變對象

容器,集合:包含對其餘對象的引用

 

 

對象擁有屬性方法

屬性:相關的值

方法:在對象上執行調用操做()的函數

點運算符,訪問屬性與方法

 

3.2對象標識與類型

內置函數

標識

id():返回對象標識(整數)(Linux:文件標識符)

is():比較兩個對象的標識

類型

type():返回對象的類型

由於類型是對象,類型的定義惟一,對其全部實例相同

因此可用

type(a) is type(b)

對兩個實例的類型作比較

 

內部類型都有名字,list,dict,file等

檢查是否爲某種內置類型

type(a)  is list

 

繼承:某個類的特殊化

檢查繼承

isinstance(a,list)

 

其餘:相同接口但不是實現於繼承(抽象——實現)

 

3.3引用計數與垃圾回收

 

對象引用計數增長

分配新名字(引用,別名)

放入容器(容器包含對象的引用:容器定義)

 

引用計數減小:

del語句

引用超出做用域(退出)

從新賦值

 

不可變數據,在程序不一樣地方可共享,節約內存

 

垃圾回收機制:

1.引用爲0,則以後不可能被訪問到(Linux:最後一個連接爲硬連接)

2.週期檢測器:搜索不可訪問的對象週期,刪除。按期進行

 

3.4引用與複製

賦值動做的含義:

不可變對象:建立副本,副本指的是值

可變對象:建立引用

 

可變容器:賦值,淺複製

賦值:建立引用

a=b

a is b

淺複製:元素共享

a=list(b)

a is not b

深複製:建立對象的副本,遞歸複製副本

 

3.5第一類對象

python中被標識符引用的都是第一類對象

 

3.6內置類型:表示數據

 

null對象

字面量:None

函數缺省返回值時,返回None

可選參數的默認值

 

數值類型

 

序列類型

包含

可變:列表

不可變:字符串,元組

range不可變?

 

映射類型

對象的集合

字典:鍵-值

鍵必須爲不可變對象

變key——hash——衝突

原key對應value不可訪問

集合類型

保存不可變對象

 

3.7內置類型:表示結構

 

3.7.1 可調用類型

1.用戶定義函數:

def語句

lambda表達式

模塊級別的可調用對象

f.__屬性__

name

dict字典:函數屬性

defaults元組:默認參數

globals

closure元組:嵌套做用域相關數據

2.方法:類中定義

靜態方法:普通

實例方法:實例做爲第一個參數隱式傳遞,聲明時寫出,調用時不寫,約定俗成爲self

訪問實例入口(容許進入實例做用域)——訪問屬性——修改(增刪改查)

類方法:類型做爲第一個參數隱式傳遞,聲明時寫出,調用時不寫,約定俗成爲cls

 訪問類的入口(進入類做用域???python無類做用域???)

使用:

建立實例

查找方法

調用方法

 

綁定方法:實例.方法   可調用對象,封裝了實例與方法。已經得到了參數self值的方法。科裏化

 

函數聲明——綁定參數——可調用對象——調用——返回值

 

函數的參數綁定過程:一次綁定全部 or 聲明處綁定默認值(靜態) or 調用時綁定當前執行環境(動態) or 方法綁定實例 or 泛型在調用處綁定類型參數

未綁定方法:類型.方法  未得到參數self,須要顯式傳遞實例。

調用運算符()

 m.__屬性__

name

class定義方法的類

func實現方法的函數對象

self方法相關實例(非綁定方法,爲None)

py3對self參數不做類型檢查?

 

3.內置函數與方法

self方法相關實例(非綁定方法,爲None)

 4.可調用的類與實例

定義__call__()

 

3.7.2類,類型,實例

type()返回對象的類型

type(Class) <type 'type'>

類型對象t屬性

t.__屬性__

__name__類名稱

__bases__基類元組

__dict__字典:類方法與變量

 

類實例對象i屬性

i.__class__實例所屬類

i.__dict__

 

3.7.3模塊類型

容器,保存import加載的對象

屬性:__dict__ 字典實現的命名空間

 

3.8解釋器內部的內置類型

代碼對象

幀對象

跟蹤對象

生成器對象

切片對象

 

3.9對象行爲與特殊方法

特殊方法實現了對行爲的支持

能夠自定義方法,來支持特定的操做

 

行爲                方法

建立,銷燬             __new__,  __init__,  __del__

字符串表示(類型轉化)         __str__,  __repr__,  __format__

比較,排序             __bool__,  __hash__, __lt__

類型檢查 

isinstance(), issubclass()      __instance(subclass)check__

屬性訪問(.運算符)          __get(set,del)attr__

屬性操做(額外邏輯層),與屬性訪問的方法交互

描述符屬性訪問——顯示調用描述符對象的相應方法

描述符對象包裝             __get__,set,delete

序列與映射             __len_,get/set/del item ,contains

迭代                __iter__,返回可迭代對象

數學操做              不少

調用操做              __call__

上下文管理with           __enter__,exit

對象檢查dir()           __dir__

相關文章
相關標籤/搜索