#演示
class user:
def __new__(cls,*args,**kwargs):
print("user new method is running")
#建立物件由object完成
instance.obkect.__new__(user)
return.instance
複製**
new()方法建立物件時自動執行。
覆蓋object類中的__new__方法後建立物件將執行覆蓋後的方法
new()方法僅僅是python開放出來給使用者敢於建立物件時的乙個操作入口,該方法並不是直接完成分配記憶體、建立物件的操作,建立物件的操作由python底層操作統一管理。
刪除定義的變數:功能等同於變數未定義
a = 100
del a
print(a)
#報錯nameerror: name'a'
isnot defined
複製**
刪除儲存模型中的資料:將資料按照變數的形式看待,功能等同於未定義過對應的資料
- 列表資料報錯:索引不存在
list1 = [1,2,3]
del list[2]
print(list[2])
# 報錯
indexerror:list index out of range
- 元組物件報錯:元組物件不支援對項的刪除
tupel1 = (1,2,3)
del tuple1[2]
ptint(tuple1[2])
#報錯typeerror:'tuple' object doesn't support item deletion
- 字典物件報錯:鍵錯誤,鍵不存在
dict1 =
del dict1["a"]
print(dict1["a"])
#報錯keyerror:'a'
- 物件中的屬性:對應物件等同於該物件為定義過該屬性
class user:
def __init__(self,name,age):
self.name = name
self.age = age
u1 = user("張三",18)
del u1.name
print(u1.name)
#報錯attributeerror:'user' object has no attribute 'name'
複製**
__del__方法用於定義物件不存在任何引用時執行的操作。當物件斷開了與最後乙個變數之間的引用關係時,將執行該物件的__new__方法。
當手工執行斷開變數與物件的最後乙個引用時執行,即del操作。
當程式執行完畢時,所有變數對應的引用都斷開,此時執行,即退出程式
__del__防範在物件斷開與最後乙個變數之間的引用關係時自動執行,無需手工執行呼叫該方法。
物件名 is 物件名 或 變數名 is 變數名
複製**
資料 is 資料
複製**
==操作針對判定的內容不同,規則不同。例如數值型資料比較數值的大小,不考慮是整數還是小數。字串比較字串的內容是否相同,不考慮引用位址是否相同。
is操作只針對位址進行判定,只要位址相同即返回true,否則返回false
class 類名:
__instance = none
def __new__(cls,*args,**kwargs):
if cls.__instance is none:
cls.__instance =object.__new__(類名)
return cls.__instance
複製**
定義的類變數要進行私有化,否則可以通過類名在類的外部訪問到
物件的判空操作使用is進行判定
測試物件管理
1 uft中物件的概念 uft中的物件有兩個概念,乙個是測試物件,乙個是執行時物件 1 測試物件 test object,to 是uft定義的一些類,用它們代表被測應用的各種物件。2 執行時物件 runtime object,ro 是實際的被測應用物件,是測試執行過程中,to用來關聯的物件。2 uf...
物件管理資源
今天看了下effective c 的條款13 以物件管理資源,感覺十分有理,特此做一下筆記。假設我們使用乙個用來描述投資行為的程式庫,其中各式各樣的投資型別都繼承自乙個根類 investment 投資型別繼承體系中的root class class investment 這裡呢,我們進一步假設這個程...
python回顧 十一 物件管理
new 方法用於定義建立物件時執行的操作,new 方法僅僅為使用者提供乙個建立物件時干預的入口,真正執行建立物件的操作由object類中的 new 方法完成 定義 new 方法是對object類中 new 方法的重寫,重寫該方法時必須再次呼叫object類中的 new 方法 new 方法在建立物件時...