python 物件管理

2021-09-24 08:00:05 字數 2040 閱讀 5792

#演示

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 方法在建立物件時...