类的特殊成员方法
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__函数中添加删除功能即可。