1,python中内建函数isinstance的用法
语法:isinstance(object,type)
其第一个参数(object)为对象,第二个参数(type)为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。
其返回值为布尔型(True or flase)。
若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。
a = "b"
>>> isinstance(a,str)
True
>>> isinstance(a,int)
False
>>> isinstance(a,(int,list,float))
False
>>> isinstance(a,(int,list,float,str))
True
2,内置函数issubclass的用法
语法:issubclass(sub,super)
检查sub类是不是super类的派生类
class A:
pass
class B:
pass
print issubclass(B,A)
B是A类的子类,返回True,不是则返回False
3,反射
pychon中的反射功能是由以下四个内置函数提供:
hasattr,getattr,setattr,delattr
improt(module_name),改四个函数分别用于对对象内部执行:检查是否含有有某成员,获取成员,设置成员,删除成员,导入模块以字符串方式导入。
class Foo(object): def __init__(self): self.name = 'python' def func(self): return 'func' obj = Foo() # #### 检查是否含有成员 #### hasattr(obj, 'name') hasattr(obj, 'func') # #### 获取成员 #### getattr(obj, 'name') getattr(obj, 'func') # #### 设置成员 #### setattr(obj, 'age', 18) setattr(obj, 'show', lambda num: num + 1) # #### 删除成员 #### delattr(obj, 'name') delattr(obj, 'func')
4,内置atter
__getattr__
从对象中读取某个属性时,首先需要从self.__sicts__中搜索该属性,再从__getattr__中查找。
class A(object): def __init__(self): self.name = 'from __dicts__: zdy' def __getattr__(self, item): if item == 'name': return 'from __getattr__: zdy' elif item == 'age': return 26 a = A() print a.name # 从__dict__里获得的 print a.age # 从__getattr__获得的
__setattr__
"__setattr__"函数是用来设置对象的属性,通过object中的__setattr__函数来设置属性:
class A(object): def __setattr__(self, *args, **kwargs): print 'call func set attr' return object.__setattr__(self, *args, **kwargs)
__delattr__
"__delattr__"函数式用来删除对象的属性:
class A(object): def __delattr__(self, *args, **kwargs): print 'call func del attr' return object.__delattr__(self, *args, **kwargs)