来源:廖雪峰

可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode

>>> isinstance('a', (str, unicode))
True
>>> isinstance(u'a', (str, unicode)) True 

由于strunicode都是从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相关推荐

  1. python getattr setattr_python hasattr/getattr/setattr介绍

    摘要 Python 对应属性和方法的判断 hasattr/getattr/setattr hasattr 判断一个对象里面是否有name属性或者方法,返回值为Boolean值, 有name 返回tru ...

  2. Python中dir,hasattr,getattr,setattr,vars的使用

    Python中dir,hasattr,getattr,setattr,vars的使用 Python一切皆对象,对象都有很多属性和方法,使用时我们怎么知道对象有哪些属性,以及如何获取对象的属性和设置对象 ...

  3. Python的hasattr() getattr() setattr() 函数使用方法详解

    Python的hasattr() getattr() setattr() 函数使用方法详解 (一) hasattr(object,name) 函数 判断一个对象里面是否有 name 属性或者 name ...

  4. python中setattr用法_详解Python的hasattr() getattr() setattr() 函数使用方法

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...

  5. python isinstance函数判断object的类型

    isinstance(object, class-or-type-or-tuple) -> bool 用以判断object的类型 如: >>>>lst = [1, 2, ...

  6. Python基础教程:hasattr() getattr() setattr() 使用方法详解

    hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False. 需要注意的是name要用括号括起来 ...

  7. [转载] python hasattr函数_Python的hasattr() getattr() setattr() 函数使用方法详解

    参考链接: Python hasattr() hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回Fa ...

  8. Python中hasattr() getattr() setattr() 函数的使用

    hasattr(object,name)函数: 判断一个对象里面是否有name属性或者name方法,返回bool值,有name属性(方法)返回True,否则返回False. class functio ...

  9. Python hasattr() getattr() setattr() 函数使用

    1.setattr(object, name, values) 给对象设置属性,如果对象不存在,则创建对象 layers = nn.Sequential(nn.Conv2d(curr_dim, cur ...

  10. Python的hasattr(),getattr(),setattr()

    1. hasattr(object, name) 判断object里是否有name属性,有就返回True,没有则返回False. class MyClass(object):name = 'jack' ...

最新文章

  1. Date类(java.util)和SimpleDateFormat类(java.text)
  2. STM32中GPIO的8种工作模式
  3. JEECG微云快速开发平台
  4. jsp页面取整数 和Java页面取整数
  5. web python 自动化是什么_Selenium 凭什么成为 Web 自动化测试的首选?(内附源码)...
  6. 23个机器学习项目,助你成为人工智能大咖
  7. native版本 修改项目react_react native项目改名(仅针对android)
  8. 【图数据库】Neo4j
  9. 中国古代杰出的科学家
  10. JavaScript中的Array对象方法调用
  11. 想减少代码量,快设置一个有感知的 Aware Spring Bean
  12. 有人劫持智能设备报假警,并直播出警画面
  13. 【软件项目管理】里程碑事件的定义
  14. android长按非控件处,Android常用之Butterknife使用详解
  15. Install and Use SourceMonitor in Windows7
  16. JLink的JTag和SWD引脚定义及接线说明
  17. java进行多个照片合并操作
  18. 如何在linux环境下打开xlsx文件
  19. Dell服务器组建阵列-Raid(有阵列卡)
  20. 神经网络与深度学习第三周-Planar data classification with one hidden layer

热门文章

  1. 银行客户交易行为预测:如何降低内存的使用量
  2. phpMyAdmin源码配置过程
  3. Docker系列(九)Docker的远程访问
  4. Numpy系列(五)给数组增加一个维度
  5. 专题训练——[kuangbin带你飞]最短路练习
  6. asp.net(C#)时间相减 得到天数、小时、分钟、秒差
  7. 基于vitamio的网络电视直播源代码
  8. mysql 查询 45 道题
  9. 将APP打包为IPA
  10. 简单ajax跨域请求