Python-面向對象之類的特殊成員方法
阿新 • • 發佈:2017-06-10
神奇 key 是什麽 logs self. family local utf-8 操作
類的特殊成員方法
1、__doc__
說明:表示類的描述信息
class Foo: """ 描述類信息,這是用於看片的神奇 """ def func(self): pass print Foo.__doc__ #輸出:類的描述信息
2、__module__ 和 __class__
說明:__module__ 表示當前操作的對象在哪個模塊
__class__ 表示當前操作的類是什麽
# _*_ coding:utf-8 _*_ import socket import threading # 創建socket實例 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 綁定socket的監聽地址 server.bind((‘localhost‘, 10086)) # 設置socket最大等待連接數 server.listen(5) print(server.__module__) # socket print(server.__class__) # <class ‘socket.socket‘>
3、__init__
說明:構造方法,通過類創建對象時,自動觸發執行。
4、__del__
說明:析構方法,當對象在內存中被釋放是,自動觸發執行。此方法一般無需定義。
5、__call__
說明:構造方法的執行是由創建對象觸發的,即:對象 = 類名() ;而對於 __call__ 方法的執行是由對象後加括號觸發,即:對象() 或者 類()()。
class Foo(object): def __init__(self): self.name = "shuaigaogao" def __call__(self, *args, **kwargs): #重寫call方法 print("running call",args,kwargs) f = Foo() #執行__init__ f(1,2,3,name=333) # 執行call方法,也可以寫成 Foo()(1,2,3,name=333) #輸出 running call (1, 2, 3) {‘name‘: 333}
6、__dict__
說明:查看類或對象中的所有成員
7、__str__
說明:如果一個類中定義了__str__方法,那麽在打印 對象 時,默認輸出該方法的返回值。
class Province(object): country = ‘China‘ def __init__(self, name): self.name = name def __str__(self): return "<obj:{0}>".format(self.name) p = Province("jiangsu") print(p) #打印這個對象 #輸出 <obj:jiangsu> #給對象重新起了一個名字
8、__getitem__、__setitem__、__delitem__
說明:用於索引操作,如字典。以上分別表示獲取、設置、刪除數據。
class Foo(object): def __getitem__(self, key): print(‘__getitem__:‘,key) def __setitem__(self, key, value): print(‘__setitem__:‘,key,value) def __delitem__(self, key): print(‘__delitem__‘,key) f = Foo() f["name"] = "Kirusx" #自動觸發__setitem__方法 f["name"] #自動觸發__getitem__方法 del f["name"] #自動觸發__delitem__方法 #輸出 __setitem__: name Kirusx __getitem__: name __delitem__ name
註:這邊的__delitem__沒有做真正的刪除,只是觸發這個方法,想要真正刪除,只需要在__delitem__函數中添加刪除功能即可。
Python-面向對象之類的特殊成員方法