类的特殊成员
类的特殊成员
#### \__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