反射的定义

根据字符串的形式去某个对象中操作成员

  • 根据字符串的形式去某个对象中寻找成员
  • 根据字符串的形式去某个对象中设置成员
  • 根据字符串的形式去某个对象中删除成员
  • 根据字符串的形式去某个对象中判断成员是否存在

反射相关函数

getattr(object,name,[default])

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

注意:返回的对象方法,返回的是内存地址,如果需要执行这个方法,需要在后面加上括号’()’

>>> class test():...     name="xiaohua"...     def run(self):...             return "HelloWord"...>>> t=test()           #实例化这个类>>> getattr(t, "name") #获取name属性,存在就打印出来。'xiaohua'>>> getattr(t, "run")        #获取run方法,存在就打印出方法的内存地址。
<bound method test.run of <__main__.test instance at 0x0269C878>>>>> func = getattr(t, "run")  #获取run方法,加个括号就可以执行这个方法
>>> func()
'HelloWord'>>> getattr(t, "age")       #获取一个不存在的属性,就报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: test instance has no attribute 'age'
>>> getattr(t, "age","18")  #若属性不存在,返回一个默认值。
'18'

setattr(object,name,value)

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

>>> class test():
...     name="xiaohua"
...     def run(self):
...             return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "age")   #判断属性是否存在
False>>> setattr(t, "age", "18")   #为属相赋值,并没有返回值
>>> hasattr(t, "age")    #属性存在了
True
>>>

delattr(object,name)

根据字符串的形式去某个对象中删除成员

>>> getattr(commons, "Name")
'ZhaiJunMing'
>>> delattr(commons, "Name")
# 获取不到就报错
>>> getattr(commons, "Name")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: module 'commons' has no attribute 'Name'

hasattr(object,name)

根据字符串的形式去某个对象中判断成员是否存在

比如:判断一个对象里面是否有name属性或者name方法,返回bool值,有则True,否则False

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> class test():
...     name="xiaohua"
...     def run(self):
...             return "HelloWord"
...>>> t=test()
>>> hasattr(t, "name") #判断对象有name属性
True>>> hasattr(t, "run")  #判断对象有run方法
True
>>>

Python基础入门:反射相关推荐

  1. 万字长文爆肝Python基础入门【巨详细,一学就会】

    目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...

  2. python免费入门手册-Python 基础入门教程

    Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. <Python 基础入 ...

  3. Python基础入门教程:使用 Python 3 协程快速获得一个代理池

    Python基础入门教程:使用 Python 3 协程快速获得一个代理池 前言 在执行 IO 密集型任务的时候,程序会因为等待 IO 而阻塞.比如我们使用 requests 库来进行网络爬虫请求的话, ...

  4. Python基础入门之解释器安装

    Python基础入门之解释器安装 一.Python简介 1.python介绍 2.python特点 3.编程相关概念 4.python的用处 5.pyhton官网 二.python解释器在Window ...

  5. Python基础入门必学内容:判断语句与循环语句

    一.if语句 关键字:if.elif.else,写法如下: # if if 条件: # (条件可以是任意表达式)# 条件成立,执行此处代码,条件不成立,跳过此处代码,继续往下执行其他diamante# ...

  6. 超全面Python基础入门教程【十天课程】博客笔记汇总表

    目录 1.学习地址 2.下载地址[视频.源码.课件.软件] 3.详细博客笔记 Day 01 Day 02 Day 03 Day 04 Day 05 Day 06 Day 07 Day 08 Day 0 ...

  7. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  8. Python基础入门笔记(二)

    前言 本文主要为 Python基础入门笔记(一)内容的补充. 一.迭代器和生成器 1.1 Python迭代器 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元 ...

  9. Python基础入门6_文件和异常

    Python 基础入门前五篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 Pytho ...

  10. Python基础入门_5面向对象基础

    Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...

最新文章

  1. 你清华学子用生命在内卷......
  2. dto是什么意思_DO,DTO,VO,POJO 你知道吗?
  3. Spring Boot:自定义starter
  4. 若S作主串,P作模式串,试分别写出利用BF算法和KMP算法的匹配过程。
  5. 让 Python 代码运行更快的最佳方式!
  6. 有关EMMC、Nandflash、SSD、HDD的科普类说明
  7. 计算机动画分为关键帧动画和,一个最简单的动画最少有几个关键帧
  8. 如何设置多级标题_办公技巧|标题样式amp;多级列表结合,再也不用手动修改1.1、1.2 ...!...
  9. Linux防火墙屏蔽ip6,观点|Linux 发行版们应该禁用 IPv4 映射的 IPv6 地址吗?
  10. CRITIC法之matlab
  11. 质量管理系统_晟通集团内训 | 质量管理系统提升实战训练
  12. Python核心编程(第三版)课后习题解答——第二章
  13. MTK(Android N)设置SDCard为默认存储
  14. Mountainous landscape
  15. 苹果低头了,但不想丢掉它的皇冠 1
  16. Cython简单demo
  17. 自然拼读(程序员必备技能)
  18. creo绘图属性模板_creo制作工程图模板教程
  19. unity文本隐藏_AI论文中隐藏的笑话,全看懂的绝对是高手!
  20. java 万能解压zip工具类

热门文章

  1. python__基础 : 类的__init__,__str__,__del__方法
  2. 我在老男孩学python的日子_day1
  3. MIT 研究员开发不会泄露数据的安全平台
  4. 如何根据指定软件版本制作属于自己的puppet yum源
  5. MongoDB安装和启动
  6. [组图]海报:计算机的爱
  7. 本网站的幻灯片浏览很好看,不懂谁有这代码?
  8. java map存放班级和姓名_Java 创建一个HashMap对象,并在其中添加学生的姓名和成绩,键为学生姓名,值为学生成绩,使用增强for循环遍历该HashMap,并输出学生成绩。...
  9. malloc 结构体_算法与数据结构——结构体变量
  10. 【ABAP】根据Tcode查找后台IMG路径