【python】isinstance可以接收多个类型,hasattr,getattr,setattr
来源:廖雪峰
可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:
>>> isinstance('a', (str, unicode))
True
>>> isinstance(u'a', (str, unicode)) True
由于str
和unicode
都是从basestring
继承下来的,所以,还可以把上面的代码简化为:
>>> isinstance(u'a', basestring)
True
仅仅把属性和方法列出来是不够的,配合getattr()
、setattr()
以及hasattr()
,我们可以直接操作一个对象的状态:
>>> class MyObject(object): ... def __init__(self): ... self.x = 9 ... def power(self): ... return self.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 (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'MyObject' object has no attribute 'z'
可以传入一个default参数,如果属性不存在,就返回默认值:
>>> getattr(obj, 'z', 404) # 获取属性'z',如果不存在,返回默认值404
404
也可以获得对象的方法:
>>> hasattr(obj, 'power') # 有属性'power'吗?
True
>>> getattr(obj, 'power') # 获取属性'power' <bound method MyObject.power of <__main__.MyObject object at 0x108ca35d0>> >>> fn = getattr(obj, 'power') # 获取属性'power'并赋值到变量fn >>> fn # fn指向obj.power <bound method MyObject.power of <__main__.MyObject object at 0x108ca35d0>> >>> fn() # 调用fn()与调用obj.power()是一样的 81
转载于:https://www.cnblogs.com/dplearning/p/6048440.html
【python】isinstance可以接收多个类型,hasattr,getattr,setattr相关推荐
- python getattr setattr_python hasattr/getattr/setattr介绍
摘要 Python 对应属性和方法的判断 hasattr/getattr/setattr hasattr 判断一个对象里面是否有name属性或者方法,返回值为Boolean值, 有name 返回tru ...
- Python中dir,hasattr,getattr,setattr,vars的使用
Python中dir,hasattr,getattr,setattr,vars的使用 Python一切皆对象,对象都有很多属性和方法,使用时我们怎么知道对象有哪些属性,以及如何获取对象的属性和设置对象 ...
- Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 (一) hasattr(object,name) 函数 判断一个对象里面是否有 name 属性或者 name ...
- python中setattr用法_详解Python的hasattr() getattr() setattr() 函数使用方法
hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...
- python isinstance函数判断object的类型
isinstance(object, class-or-type-or-tuple) -> bool 用以判断object的类型 如: >>>>lst = [1, 2, ...
- Python基础教程:hasattr() getattr() setattr() 使用方法详解
hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...
- [转载] python hasattr函数_Python的hasattr() getattr() setattr() 函数使用方法详解
参考链接: Python hasattr() hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回Fa ...
- Python中hasattr() getattr() setattr() 函数的使用
hasattr(object,name)函数: 判断一个对象里面是否有name属性或者name方法,返回bool值,有name属性(方法)返回True,否则返回False. class functio ...
- Python hasattr() getattr() setattr() 函数使用
1.setattr(object, name, values) 给对象设置属性,如果对象不存在,则创建对象 layers = nn.Sequential(nn.Conv2d(curr_dim, cur ...
- Python的hasattr(),getattr(),setattr()
1. hasattr(object, name) 判断object里是否有name属性,有就返回True,没有则返回False. class MyClass(object):name = 'jack' ...
最新文章
- Date类(java.util)和SimpleDateFormat类(java.text)
- STM32中GPIO的8种工作模式
- JEECG微云快速开发平台
- jsp页面取整数 和Java页面取整数
- web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...
- 23个机器学习项目,助你成为人工智能大咖
- native版本 修改项目react_react native项目改名(仅针对android)
- 【图数据库】Neo4j
- 中国古代杰出的科学家
- JavaScript中的Array对象方法调用
- 想减少代码量,快设置一个有感知的 Aware Spring Bean
- 有人劫持智能设备报假警,并直播出警画面
- 【软件项目管理】里程碑事件的定义
- android长按非控件处,Android常用之Butterknife使用详解
- Install and Use SourceMonitor in Windows7
- JLink的JTag和SWD引脚定义及接线说明
- java进行多个照片合并操作
- 如何在linux环境下打开xlsx文件
- Dell服务器组建阵列-Raid(有阵列卡)
- 神经网络与深度学习第三周-Planar data classification with one hidden layer