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 2017-11-07 22:06  super2feng  阅读(246)  评论(0)    收藏  举报