hasattr(object, name)

判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。

需要注意的是name要用括号括起来

1 >>> class test():

2 ... name="xiaohua"

3 ... def run(self):

4 ... return "HelloWord"

5 ...

6 >>> t=test()

7 >>> hasattr(t, "name") #判断对象有name属性

8 True

9 >>> hasattr(t, "run") #判断对象有run方法

10 True

11 >>>

getattr(object, name[,default])

获取对象object的属性或者方法,如果存在打印出来,如果不存在,打印出默认值,默认值可选。

需要注意的是,如果是返回的对象的方法,返回的是方法的内存地址,如果需要运行这个方法,

可以在后面添加一对括号。

1 >>> class test():

2 ... name="xiaohua"

3 ... def run(self):

4 ... return "HelloWord"

5 ...

6 >>> t=test()

7 >>> getattr(t, "name") #获取name属性,存在就打印出来。

8 'xiaohua'

9 >>> getattr(t, "run") #获取run方法,存在就打印出方法的内存地址。

10 >

11 >>> getattr(t, "run")() #获取run方法,后面加括号可以将这个方法运行。

12 'HelloWord'

13 >>> getattr(t, "age") #获取一个不存在的属性。

14 Traceback (most recent call last):

15 File "", line 1, in

16 AttributeError: test instance has no attribute 'age'

17 >>> getattr(t, "age","18") #若属性不存在,返回一个默认值。

18 '18'

19 >>>

setattr(object, name, values)

给对象的属性赋值,若属性不存在,先创建再赋值。

1 >>> class test():

2 ... name="xiaohua"

3 ... def run(self):

4 ... return "HelloWord"

5 ...

6 >>> t=test()

7 >>> hasattr(t, "age") #判断属性是否存在

8 False

9 >>> setattr(t, "age", "18") #为属相赋值,并没有返回值

10 >>> hasattr(t, "age") #属性存在了

11 True

12 >>>

一种综合的用法是:判断一个对象的属性是否存在,若不存在就添加该属性。

1 >>> class test():

2 ... name="xiaohua"

3 ... def run(self):

4 ... return "HelloWord"

5 ...

6 >>> t=test()

7 >>> getattr(t, "age") #age属性不存在

8 Traceback (most recent call last):

9 File "", line 1, in

10 AttributeError: test instance has no attribute 'age'

11 >>> getattr(t, "age", setattr(t, "age", "18")) #age属性不存在时,设置该属性

12 '18'

13 >>> getattr(t, "age") #可检测设置成功

14 '18'

15 >>>

python hasattr函数_Python的反射机制、hasattr() getattr() setattr() 函数使用方法详解相关推荐

  1. 依赖注入底层反射原理_PHP基于反射机制实现自动依赖注入的方法详解_php技巧...

    这篇文章主要介绍了PHP基于反射机制实现自动依赖注入的方法,结合实例形式分析了php使用反射实现自动依赖注入的步骤.原理与相关操作技巧,本文实例讲述了PHP基于反射机制实现自动依赖注入的方法.分享给大 ...

  2. python调用adb shell命令_Python之使用adb shell命令启动应用的方法详解

    Python之使用adb shell命令启动应用的方法详解 一直有一个心愿希望可以用Python做安卓自动化功能测试,在一步步摸索中,之前是用monkeyrunner,但是发现对于控件ID的使用非常具 ...

  3. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  4. python可以使用二维元组吗_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    怎么去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  5. python元组读取到列表_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  6. python输入字符串并反序result_python字符串反转的四种方法详解

    python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...

  7. python 生成器 send_python(可迭代对象,迭代器,生成器及send方法详解)

    一.可迭代对象 对象必须提供一个__iter__()方法,如果有,那么就是可迭代对象, 像列表,元祖,字典等都是可迭代对象 可使用isinstance(obj,Iterable)方法判断 1 from ...

  8. python定义静态变量_对Pyhon实现静态变量全局变量的方法详解

    python不能像C++一样直接定义一个static变量或者通过extern来导入别的库的变量而实现数据共享,但是python的思想是通过模块化来解决这个问题,就是通过模块来实现全局变量. 首先新建一 ...

  9. python iloc函数_python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)

    df是一个dataframe,列名为A B C D 具体值如下: A B C D 0 ss 小红 8 1 aa 小明 d 4 f f 6 ak 小紫 7 dataframe里的属性是不定的,空值默认为 ...

最新文章

  1. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...
  2. 男人们聚会时,都聊些什么?
  3. 开发板与pc之间文件传输:kermit and lrzsz
  4. Servlet自动注入Spring容器中的Bean解决方法
  5. Kotlin 与 Java 比较
  6. android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好
  7. jsoup的介绍使用(转)
  8. (五)boost库之随机数random
  9. [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.3
  10. python request.post 字典参数以json_Python requests.post方法中data与json参数区别详解
  11. 利用均差的牛顿插值法(Newton)
  12. eclipse搭建SSH框架详解
  13. 【数据结构与算法】图
  14. Codeforces Round #697 (Div.3) A~G解题报告与解法证明
  15. win7系统还原失败怎么解决
  16. Tomcat学习总结(8)——Tomcat+Nginx集群解决均衡负载及生产环境热部署
  17. 月薪一万在石家庄能过什么样的生活?
  18. 软件开发流程知识概括
  19. Python基础知识之面向对象编程介绍(二)
  20. OU Graphics 建筑后期悬挂植物制作PS教程

热门文章

  1. linux--3--命令
  2. uni-app 微信小程序导航栏navigationBar 安卓不居中问题
  3. 个人简历管理系统(3)- 登陆与注册界面
  4. nvm管理本地Node版本(Windows)
  5. 家庭宽带多运营商接入简单方案
  6. Android 初级程序员
  7. turtle八角图形绘制
  8. www.miibeian.gov.cn 的PageRank
  9. linux中常见渗透命令
  10. 3DMax给模型贴纹理图片