Python关于反射的实例代码分享


Posted in Python onFebruary 20, 2020

反射

在Python中,能够通过一个对象,找出type、class、attribute或者method的能力,成为反射。

函数与方法

内建函数:

getattr(object,name[,degault]) 通过name返回object的属性值,当属性不存在,将使用default返回,如果没有default,则抛出AttributeError。Name必须为字符串。

setattr(object,name,value) object的属性存在,则覆盖,不存在,新增。

hasattr(object,name) 判断对象是否有这个名字的属性,name必须为字符串

介绍了基本知识点,我们来看下实例代码:

#!/usr/bin/env python
#-*-coding:utf8-*-

def bulk(self):
  print("%s is jiao ...."%self.name)

class Dog(object):
  def __init__(self,name):
    self.name=name

  def eat(self,food):
    print("%s is eating ...."%self.name,food)

d= Dog("dfxa")
choice = input(">>:").strip()

if hasattr(d,choice): #判断一个d(对象)里是否有对应的choice字符串方法

  # delattr(d,choice) # Deletes the named attribute from the given object.
  # delattr(x, 'y') is equivalent to ``del x.y''
  # 相当于 del d.choice

   func = getattr(d,choice) #根据字符串去获取d对象里的对应方法的内存地址
   func("cheng")
  # attr = getattr(d,choice)
  # setattr(d,choice,"drr")

else:
  # 将给定对象的命名属性设置为指定值
  setattr(d,choice,22) # choice是字符串,相当于 d.choice = z
  print(getattr(d,choice))
print(d.name)

第二短代码:

def bulk(self):
  print("%s is jiao ...."%self.name)

class Dog(object):
  def __init__(self,name):
    self.name=name

  def eat(self,food):
    print("%s is eating ...."%self.name,food)

d= Dog("dfxa")
choice = input(">>:").strip()

if hasattr(d,choice): #判断一个d(对象)里是否有对应的choice字符串方法
   func = getattr(d,choice) #根据字符串去获取d对象里的对应方法的内存地址
   func("cheng")
  #不能直接print(d.choice) ,choice是一个字符串,应该按照下面的方法写
  # attr = getattr(d,choice)
  # print(attr)

else:
   setattr(d,choice,bulk)
   # 运行程序,输入talk相当于 d.talk = bulk,把bulk的内存地址赋给了talk
   # 此时函数就是talk,talk() == 调用bulk()
   #d.talk(d) #所以这里只能调用talk()
   #动态的把类外面的方法装配到类里,通过字符串的形式,但调用需要把自己(对象)传进去
   #这样的话就把函数写死了,另一种写法
   func2 = getattr(d,choice)
   func2(d) #这样不管输入的是talk还是bulk都可以

>>:talk

dfxa is jiao ....

到此这篇关于Python关于反射的实例代码分享的文章就介绍到这了,更多相关Python学习之反射内容请搜素三水点靠木以前的文章或下面相关文章,希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
Python Django使用forms来实现评论功能
Aug 17 Python
详解python开发环境搭建
Dec 16 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
python3.6利用pyinstall打包py为exe的操作实例
Oct 31 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
Django urls.py重构及参数传递详解
Jul 23 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
UI自动化定位常用实现方法代码示例
Oct 27 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
Python3监控疫情的完整代码
Feb 20 #Python
浅谈Pytorch torch.optim优化器个性化的使用
Feb 20 #Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 #Python
Python sys模块常用方法解析
Feb 20 #Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 #Python
pytorch ImageFolder的覆写实例
Feb 20 #Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 #Python
You might like
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
基于JQuery的cookie插件
2010/04/07 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
关闭浏览器时提示onbeforeunload事件
2013/12/25 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
js实现模拟计算器退格键删除文字效果的方法
2015/05/07 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
Python 面向对象 成员的访问约束
2008/12/23 Python
wxpython 学习笔记 第一天
2009/02/09 Python
python通过pil模块将raw图片转换成png图片的方法
2015/03/16 Python
Python自动调用IE打开某个网站的方法
2015/06/03 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
使用OpenCV实现仿射变换—缩放功能
2019/08/29 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Python集合操作方法详解
2020/02/09 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
施华洛世奇韩国官网:SWAROVSKI韩国
2018/06/05 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
客户经理岗位职责
2013/12/08 职场文书
法人授权委托书范本
2014/09/17 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
会计主管竞聘书
2015/09/15 职场文书
入团申请书格式
2019/06/20 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
Python中time标准库的使用教程
2022/04/13 Python