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的web.py框架下的application.py模块
May 02 Python
python通过索引遍历列表的方法
May 04 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
Python制作简易注册登录系统
Dec 15 Python
python SMTP实现发送带附件电子邮件
May 22 Python
Python加载带有注释的Json文件实例
May 23 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python 判断文件或目录是否存在的实例代码
Jul 19 Python
python 实现快速生成连续、随机字母列表
Nov 28 Python
Tensorflow 实现释放内存
Feb 03 Python
Python中如何引入第三方模块
May 27 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 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类中Static方法效率测试代码
2010/10/17 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
PHP安全配置详细说明
2011/09/26 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
在Python的Django框架中加载模版的方法
2015/07/16 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python探索之ModelForm代码详解
2017/10/26 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python常用运维脚本实例小结
2020/02/14 Python
python实现图片横向和纵向拼接
2020/03/05 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
优秀经理获奖感言
2014/03/04 职场文书
个人担保书范文
2014/05/20 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书