1、__doc__:表示类的描述信息
代码实例:
class Foo: """ 描述类信息 """ def func(self): pass print Foo.__doc__ # 输出: 描述类信息
2、__module__ 和 __class__:
__module__:表示当前操作的对象在哪个模块;
__class__:表示当前操作的对象的类是什么。
代码示例:
class C: def __init__(self): self.name = 'wupeiqi' from lib.aa import C obj = C() print obj.__module__ # 输出 lib.aa,即:输出模块 print obj.__class__ # 输出 lib.aa.C,即:输出类
3、__call__:对象后面加括号,触发执行。
代码示例:
class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print '__call__' obj = Foo() # 执行 __init__ obj() # 执行 __call__
4、__dict__:查看类或对象中的所有成员
代码示例:
class Province: country = 'China' def __init__(self, name, count): self.name = name self.count = count def func(self, *args, **kwargs): print 'func' # 获取类的成员,即:静态字段、方法、 print Province.__dict__ # 输出:{'country': 'China', '__module__': '__main__', 'func': <function func at 0x10be30f50>, '__init__': <function __init__ at 0x10be30ed8>, '__doc__': None} obj1 = Province('HeBei',10000) print obj1.__dict__ # 获取 对象obj1 的成员 # 输出:{'count': 10000, 'name': 'HeBei'} obj2 = Province('HeNan', 3888) print obj2.__dict__ # 获取 对象obj1 的成员 # 输出:{'count': 3888, 'name': 'HeNan'}
5、__str__:如果一个类中定义了__str__方法,那么在打印对象 时,默认输出该方法的返回值。
代码示例:
class Foo: def __str__(self): return 'alex li' obj = Foo() print obj # 输出:alex li
6、__getitem__、__setitem__、__delitem__:
用于索引操作,如将实例变成字典来处理。以上分别表示获取、设置、删除数据
代码示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- class Foo(object): def __init__(self): self.data = {} def __getitem__(self, key): print('__getitem__',key) return self.data.get(key) def __setitem__(self, key, value): print('__setitem__',key,value) self.data[key]=value def __delitem__(self, key): print('__delitem__',key) obj = Foo() result = obj['k1'] # 自动触发执行 __getitem__ obj['k2'] = 'alex' # 自动触发执行 __setitem__ print(obj['k2']) del obj['k1'] # 输出: __getitem__ k1 __setitem__ k2 alex __getitem__ k2 alex __delitem__ k1
posted on
浙公网安备 33010602011771号