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 相关文章推荐
在Python中调用ggplot的三种方法
Apr 08 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Pytorch中的variable, tensor与numpy相互转化的方法
Oct 10 Python
使用python实现男神女神颜值打分系统(推荐)
Oct 31 Python
python生成器用法实例详解
Nov 22 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
Python文件夹批处理操作代码实例
Jul 21 Python
python如何停止递归
Sep 09 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
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
php头像上传预览实例代码
2017/05/02 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
JavaScript高级程序设计 阅读笔记(二十) js错误处理
2012/08/14 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
Vue的路由及路由钩子函数的实现
2019/07/02 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
vue在图片上传的时候压缩图片
2020/11/18 Vue.js
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
python学生管理系统代码实现
2020/04/05 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
2014年租房协议书范本
2014/10/30 职场文书
员工辞职信范文
2015/03/02 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
初中英语教学反思范文
2016/02/15 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书