类的特殊成员

类的特殊成员


#### \__doc__:   打印类的描述信息 ```python class Student(object): '''this is student''' pass print(Student.__doc__) ----------------------------------------- >>>:this is student ```

_module_:

  返回当前类从哪个模块导出

class Student(object):
    pass
print(__name__)
print(Student.__module__)
-----------------------------------------
>>>:__mian__
>>>:__mian__

_class_:

  返回类的本身

class Student(object):
    pass
class Class(Student):
    pass
print(Student.__class__)
print(Class.__class__)
------------------------------------------
>>>:<class 'type'>   #type是所有类的起源
>>>:<class 'type'>

_dict_:

  将析构函数里面的参数以字典的形式打印出来
  类._dict_: 打印类里面的所有属性,不包括实例属性
  实例化._dict_: 打印所有实例属性,不包括类属性

class Student(object):
    number= 12
    def __init__(self,name,age):
        self.name = name
        self.age = age
s1 = Student('zhangsan',18)
s1.course = 'python'
------------------------------------------------------------
print(Student.__dict__)

>>>:{'__module__': '__main__', 'number': 12, '__init__': <function Student.__init__ at 0x102247510>, '__dict__': <attribute '__dict__' of 'Student' objects>, '__weakref__': <attribute '__weakref__' of 'Student' objects>, '__doc__': None}
----------------------------------------------------------
print(s1.__dict__)

>>>:{'name': 'zhangsan', 'age': 18, 'course': 'python'}

_str_:

  打印对象时,默认输出该方法的返回值

class Student(object):
    def __init__(self,name):
        self.name = name
    def __str__(self):
        return ('name:%s'%slf.name)
s1 =Student('zhangsan')
print(s1)
-----------------------------------------------
>>>:name:zhangsan

_call_:

  对象通过提供_call_(slef, [,*args [,**kwargs]])方法可以模拟函数的行为,如果一个对象提供了该方法,就可以像函数一样使用它。

class Student(object):
    def __call__(self,name):
        print('my name is %s'%name)
s1 = Student()
s1('tom')
-------------------------------------------------
>>>: my name is tom

_getitem_、_setitem_、_delitem_:

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

class MyDict(object):
    def __getitem__(self,key):
        print('__getitem__:',key)
        
    def __setitem__(self,key,value):
        print('__setitem__: %s:%s'%(key,value))
        
    def __delitem__(self,key):
        print('__delitem__:',key)
        
dict = MyDict()
result = dict['name']       # dict.__getitem__('name')
dict['name'] = 'zhangsan'   # dict.__setitem__('name',value)
del dict['name']            # dict.__delitem__('name')
--------------------------------------------------------
>>>:__getitem__: name
>>>:__setitem__: name:zhangsan
>>>:__delitem__: name
用户看到的是一个字典的操作,实际上是对实例进行的操作

isinstance(obj,cls):

  判断obj是否为cls类的对象

class Student(object):
    pass
s1 = Student()
print(isinstance(s1,Student))
----------------------------------------------------------
>>>:True

issubclass(sub, super):

  判断sub类是否为super的派生类

class School(object):
    pass
class Student(School):
    pass
print(issubclass(Student,School))
-----------------------------------------------------------
>>>:True
posted @ 2017-08-24 15:27  在下不想说  阅读(138)  评论(0编辑  收藏  举报