日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向对象内置方法

發布時間:2025/3/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向对象内置方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

__str__

對于python的數據類型(類型也是類),打印結果是一個值。
而對于自定義類并實例化的對象,打印這個對象,得到的結果是一個內存地址。而那有沒有辦法自定義對象的打印信息呢?在類體中定制 __str__ 函數即可實現這個功能。

class Teacher:def __init__(self,name,major,level):self.name = nameself.major = majorself.level = leveldef __str__(self):return '''name: %smajor: %slevel: %s'''%(self.name, self.major, self.level)t = Teacher('Egon','python',10) print(t) '''打印結果如下: name: Egon major: python level: 10 '''

__str__ 特性:1. 觸發時執行 2. 一定要有返回值,并且是字符串類型。

__del__

從內存中清除對象有兩種方式:1. del obj 2. 程序執行完后,也會將obj從內存中清除。其實都是悄無聲息地觸發了 對象的綁定方法 __del__ 的執行。我們也可以定制該方法。

class Teacher:def __init__(self,name,major,level):self.name = nameself.major = majorself.level = leveldef __del__(self):print('deleted successfully') # 輸出提示信息t = Teacher('Egon','python',10)'''程序運行完輸出如下信息: deleted successfully '''

__del__ 應用場景:
對于有連接的對象,比如套接字對象,數據庫連接對象,這些對象與遠端建立起連接后(通過TCP/UDP等協議),連接是由操作系統維持的。在我們刪除了對象或程序執行完畢,__del__ 會被觸發清除該對象。但是由該對象產生的連接關閉,還占用著資源。通過定制__del__, 可以來關閉連接或文件,形式如下:

def __del__(self):'''定制與對象有關的清理操作'''conn.close()file.close()

__getitem__、__setitem__、__delitem__

python的很多數據類型,比如列表,字典,都支持通過obj[ ]方式操作對象。我們也可以通過python提供的內置方法,為自定義類實現這種操作。

class Teacher:def __init__(self,name,major,level):self.name = nameself.major = majorself.level = leveldef __getitem__(self,val):return self.__dict__[val]def __setitem__(self,key, val):self.__dict__[key] = valdef __delitem__(self, key):self.__dict__.pop(key)t = Teacher('Egon','python',10) # 這樣,以下兩種方式都能完成同樣的效果。 print(t.name) print(t['name']) # 把t和'name'傳給 __getitem__(self, val)中的self和val t.name='EGON' t['name'] = 'EGON2' del t['level'] del t.major print(t.__dict__) '''執行結果如下: Egon Egon {'name': 'EGON2'} '''

總結

以上是生活随笔為你收集整理的面向对象内置方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。