类的特殊成员方法

类的成员除了有类变量、实例变量、方法外,还有一些特殊的成员方法,下面列举些比较重要的特殊成员:

类的特殊成员方法

1、__doc__:   表示类的描述信息,

  大家都知道,在开发中应该在代码中多加注释,来增强代码的可读性。用__doc__就可以查看函数或类的描述信息。

def  test():
    '''
    this is  a  test function
    '''
    pass
class ClassTest(object):
    '''
    this is a class  method
    '''
print test.__doc__
print ClassTest.__doc__

2、__module__和__class__

  __module__ 表示对象所在的模块

  __class__  表示对象所在的类是什么

3、__dict__: 查看类或对象中的所有成员

  如果是类直接调这个方法表示打印类中的类变量、类方法、类的特殊方法等,但不可打印实例变量。

  如果是对象调用这个方法的话,表示打印对象的实例变量,但不可打印类中的类变量、类方法、类的特殊方法等。

  这个方法很重要,一定要多掌握,用此方法打印的结果为字典。

  

class ClassTest(object):
    '''
    this is a class  method
    '''
    commity_data = 123
    def  __init__(self,name,age):
        self.name = name
        self.age = age
    def  hello(self):
        pass
    def  hi(self):
        pass

user_info = ClassTest('goser',23)
print ClassTest.__dict__
print user_info.__dict__

输出结果为:

{'__module__': '__main__', 'hi': <function hi at 0x00BE5430>, '__dict__': <attribute '__dict__' of 'ClassTest' objects>, 'hello': <function hello at 0x00BE54B0>, '__weakref__': <attribute '__weakref__' of 'ClassTest' objects>, '__doc__': '\n this is a class method\n ', '__init__': <function __init__ at 0x00BE5470>, 'commity_data': 123}


{'age': 23, 'name': 'goser'}

4、__call__: 如果类中定义了此方法的话,那么在生成类对象后,就可以在类对象加上()就可以直接调用__call__()方法

  

class ClassTest(object):
    '''
    this is a class  method
    '''
    commity_data = 123
    def  __init__(self,name,age):
        self.name = name
        self.age = age
    def  hello(self):
        pass
    def  hi(self):
        pass
    def  __call__(self, *args, **kwargs):
        print 'you input pattern is %s|%s:' %(args,kwargs)

user_info = ClassTest('goser',23)
user_info(1,2,3,sex='male')

输出结果为:
you input pattern is (1, 2, 3)|{'sex': 'male'}:

5、__str__:如果类中定义了此方法,那么在打印对象的时候默认打印的是此方法的返回值

  

class ClassTest(object):
    '''
    this is a class  method
    '''
    commity_data = 123
    def  __init__(self,name,age):
        self.name = name
        self.age = age
    def  hello(self):
        pass
    def  hi(self):
        pass
    def  __call__(self, *args, **kwargs):
        print 'you input pattern is %s|%s:' %(args,kwargs)
    def  __str__(self):

        return 'the class commity pattern is %s:' % self.commity_data

user_info = ClassTest('goser',23)
user_info(1,2,3,sex='male')
print user_info

运行结果为:
you input pattern is (1, 2, 3)|{'sex': 'male'}:
the class commity pattern is 123:

6、__getitem__、__setitem__、 __delitem__

  表示用以引用索引操作,比如字典,以上分别表示获取、设置、删除数据

posted @ 2017-06-30 10:37  goser  阅读(318)  评论(0编辑  收藏  举报