【python】isinstance可以接收多个类型,hasattr,getattr,setattr
2016-11-09 20:51
405 查看
来源:廖雪峰
可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
由于
仅仅把属性和方法列出来是不够的,配合
紧接着,可以测试该对象的属性:
如果试图获取不存在的属性,会抛出AttributeError的错误:
可以传入一个default参数,如果属性不存在,就返回默认值:
也可以获得对象的方法:
可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
>>>isinstance('a',(str,unicode)) True >>>isinstance(u'a',(str,unicode)) True
由于
str和
unicode都是从
basestring继承下来的,所以,还可以把上面的代码简化为:
>>>isinstance(u'a',basestring) True
仅仅把属性和方法列出来是不够的,配合
getattr()、
setattr()以及
hasattr(),我们可以直接操作一个对象的状态:
>>>classMyObject(object): ...def__init__(self): ...self.x=9 ...defpower(self): ...returnself.x*self.x ... >>>obj=MyObject()
紧接着,可以测试该对象的属性:
>>>hasattr(obj,'x')#有属性'x'吗? True >>>obj.x 9 >>>hasattr(obj,'y')#有属性'y'吗? False >>>setattr(obj,'y',19)#设置一个属性'y' >>>hasattr(obj,'y')#有属性'y'吗? True >>>getattr(obj,'y')#获取属性'y' 19 >>>obj.y#获取属性'y' 19
如果试图获取不存在的属性,会抛出AttributeError的错误:
>>>getattr(obj,'z')#获取属性'z' Traceback(mostrecentcalllast): File"<stdin>",line1,in<module> AttributeError:'MyObject'objecthasnoattribute'z'
可以传入一个default参数,如果属性不存在,就返回默认值:
>>>getattr(obj,'z',404)#获取属性'z',如果不存在,返回默认值404 404
也可以获得对象的方法:
>>>hasattr(obj,'power')#有属性'power'吗? True >>>getattr(obj,'power')#获取属性'power' <boundmethodMyObject.powerof<__main__.MyObjectobjectat0x108ca35d0>> >>>fn=getattr(obj,'power')#获取属性'power'并赋值到变量fn >>>fn#fn指向obj.power <boundmethodMyObject.powerof<__main__.MyObjectobjectat0x108ca35d0>> >>>fn()#调用fn()与调用obj.power()是一样的 81
相关文章推荐
- 【再回首Python之美】【类-内建函数】issubclass,isinstance,hasattr,getattr,setattr,delattr,dir,super,vars
- python 内置函数isinstance(),hasattr(),getattr(),setattr()的介绍
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- python hasattr() getattr() setattr()函数的使用
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- Python 类 setattr、getattr、hasattr 的使用
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- python 面向对象中一些常用内建函数【getattr(), setattr(). hasattr(). delattr()...】
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- python中dir(), hasattr(), getattr(), setattr()的使用
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- Python的getattr(),setattr(),delattr(),hasattr()
- PYTHON getattr setattr hasattr delattr内置函数
- 怎么使用Python的getattr(),setattr(),delattr(),hasattr()
- python 中getattr(object,name,default),setattr(object,name,default),hasattr(),delattr()