類的內建方法

2022-05-23 17:30:14 字數 2204 閱讀 5596

前後帶槓槓的都是特殊的內建函式 會在某些時機自動執行 一般情況我們不應該直接呼叫他們

當我們需要自定義列印顯示內容時 就需要實現__str__方法

該方法 必須 返回乙個字串 返回的是什麼 列印出來就是什麼

class test:

def __init__(self,name):

self.name = name

def __str__(self):

print("str run....")

return self.name

t = test("安公尺")

print(t)#上下兩個是一樣的..

print(t.__str__())

# 在講乙個物件轉換字串時 本質就是在呼叫這個物件 __str__方法

print(str(t))

當物件被從記憶體中刪除時會自動執行

另一種情況時 程式設計師手動刪除了這個物件 也會自動執行

什麼時候使用它

在python中 有自動記憶體管理機制 所以 python自己建立的資料 不需要我們做任何操作

但是有一種情況 我們使用python開啟了乙個不屬於python管理的資料

(比如開啟了乙個檔案 這個檔案一定是作業系統在開啟 會占用系統記憶體 而python直譯器無法作業系統記憶體的)

所以 當你的python直譯器執行結束後 檔案依然處於開啟狀態 這時候就需要使用__del__來關閉系統資源

簡單地說 當程式執行結束時 需要做一些清理操作 就使用__del__

__del__也稱之為 析構函式

即:分析構造 並拆除這個物件

class student:

def __del__(self):

print("物件被刪除了....")

stu = student()

# 手動刪除 立即執行__del__

del stu

import time

time.sleep(5)

print('太遲了,物件已被刪除')

class textfile:

def __init__(self,filepath,mode="rt",encoding="utf-8"):

self.file = open(filepath,mode=mode,encoding=encoding)

def read(self):

return self.file.read()

def write(self,text):

self.file.write(text)

# 該方法其實就是乙個通知性質 僅僅是告訴程式設計師 物件即將被刪除

def __del__(self):

# 在這裡關閉系統的檔案 妥妥的

self.file.close()

"""

exec

execute的縮寫

表示執行的意思

其作用 是幫你解析執行python** 並且將得到的名稱 儲存到制定的命名空間  直譯器內部也是呼叫它來執行**的
"""

# 引數一 需要乙個字串物件 表示需要被執行的python語句

# 引數二 是乙個字典 表示全域性命名空間

# 引數三 也是乙個字典 表示區域性命名空間

globalsdic = {}

localsdic = {}

exec("""

aaaaaaaaaaaaaaaaaaaa = 1

bbbbbbbbbbbbbbbbbbbbbbbbbbbb = 2

def func1():

print("我是func1")

""",globalsdic,localsdic)

# 如果同時制定了 全域性和區域性 則 會字串中包含名稱 解析後存到區域性中

# print(globalsdic)

print(localsdic)

localsdic["func1"]()

# # 如果只傳了乙個傳引數 則 將字串中包含名稱 解析後存到全域性中

# exec("""

# aaaaaaaaaaaaaaaaaaaa = 1

# bbbbbbbbbbbbbbbbbbbbbbbbbbbb = 2

## """,localsdic)

python 類的內建方法

1.doc 列印類的備註 class animal object 建立動物類 def run self 動物都會跑 pass a animal 列印animal類的備註 print a.doc 2.call 將類進行例項化後,呼叫該例項時,會執行 call 方法。注意 類中無 call 方法時,例項...

類中的內建方法

一 簡單介紹 以上都是對該方法的描述,使用哪一種都可以 類中的每乙個雙下劃線方法都有它自己的特殊意義 二 內建方法類別 一 call 方法 案例class a def call self,args,kwargs print 執行call方法 a a a a.call 也可以直接呼叫call方法 物件...

幾個類的內建方法

類的內建方法 雙下方法 str 當類中定義了 str 方法後,print 這個類物件時 會呼叫 str 或者格式化 s輸出物件時,都會觸發 str repr 當類中定義了 repr 方法後,print repr a 就會呼叫a物件中的 repr 方法。格式化輸出用 r時同樣會呼叫 repr 同樣物件...