1. 程式人生 > >Python-面向對象之類的特殊成員方法

Python-面向對象之類的特殊成員方法

神奇 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-面向對象之類的特殊成員方法