首页 > 代码库 > Python-面向对象之类的特殊成员方法

Python-面向对象之类的特殊成员方法

类的特殊成员方法

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-面向对象之类的特殊成员方法