類與物件深度問題

2021-10-07 12:19:51 字數 923 閱讀 5463

defnew(cls)#建立乙個類物件,自動執行,當期執行時如果沒有創造物件並且返回則不會執行__init__方法,因為__init__方法是只有物件被建立時才會自動呼叫。一般init會自動呼叫是因為物件被自動建立了,所有類的父類object有這個功能,噹噹你執行了__new__之後object不會在執行,所以假如__new__中沒有建立物件則__init__不會執行。

一般在new方法最後加一行:

return object.new(cls)#通過從object方法中呼叫new來建立物件。

new方法也可以直接寫在程式裡:

li=list.new(list,「abc」)

print(li)

輸出【】

new建立列表時不會寫入所以』abc』沒有寫入,但假如建立元組則會寫入。

__dict__的實質時動態繫結屬性

p1.dict[key]=value,可以新增,操作類似字典,引用快,占用空間大。

__slots__能建立唯讀,使用的記憶體少,引用慢

with open(檔案位置)as 命名

可以直接開啟檔案,open(檔案位置)可以換成函式名,但裡面必須有def __enter__和defexit,因為with開啟檔案後不需要關閉的實質就是with可以執行這兩個函式。

裝飾器@contextlib.contextmanager等於加入了enter和exit。

a.gt(b)a是否大於b

from functools import total_ordering

可以匯入@total_orfering裝飾器,這樣你的函式的結果是可比較的就可以比較,不然例項與例項的比較其實就是類與類的比較。

類與物件深度問題與解決技巧(1)

比如我們想定義乙個inttuple類,表示接受引數後,只取其中int型別,且大於0的,然後存為tuple型別 首先我們想到繼承父類tuple,然後修改一下 class inttuple tuple def init self,iterable for i in iterable ifisinstan...

類與物件 物件

一 什麼是物件?1.物件是由我們自己建立的類來建立出來的。2.物件就是類的例項 可以真正使用類的資料,可以呼叫類中元素的資料 3.乙個類可以建立出多個物件 二 如何建立物件?1.保證用來建立物件的類是存在 2.需要通過類中提供的構造方法建立物件 格式 new 構造方法 引數值 三 建立好的物件的有何...

類與物件深度問題與解決技巧 3 上下文管理器

首先寫乙個簡單的異常處理 try f open demo.txt w 丟擲異常 raise typeerror 捕獲異常 except typeerror as e print typeerror f.close except valueerror as e print valueerror f.c...