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...