位置:编程技术网 > 运维管理 > 正文 >

python反射到底是什么?真没那么高大上

2021年09月21日 11:38来源:网络搜索手机版

艾诺迪亚4 内购,日本动漫排行榜2013,这物患癌前就有!发现早的人都没死

python反射到底是什么?真没那么高大上

python一看便懂

1602821146

先理一下概念

反射严谨解释:通过字符串的形式操作对象或模块中的成员。

反射通俗解释:反射就是从一个东西里取出属于他的成员(可以判断、调用、编辑、删除)

我们用成员调用来对比解释一下更清楚

正常调用:程序员自己知道什么时候调用哪个属性或方法。比如:对象.属性、对象.方法()反射调用:由用户来决定(输入或点击)什么时候调用哪个属性或方法。比如:g = getattr(对象, '属性或方法名')

操作成员包括判断、调用、设置、删除,python内置了四个方法专门操作成员,简单介绍一下

成员判断:hasattr(obj, 'age') 对象obj中存在age成员返回True,不存在返回False成员调用:getattr(obj, 'age') 对象obj中取出age成员,age如果是方法则加小括号调用成员设置:setattr(obj, 'age', 10) 对象obj中设置age成员属性为10成员删除:delattr(obj, 'age') 对象obj中删除age成员

反射调用比正常调用要麻烦些,但是为什么要用反射调用呢?

原因:用户输入或点击的链接一般都是字符串形式(不是字符串也可以转换成字符串)

先通过下面的示例知道反射如何使用

1、从对象中取成员

正常调用

反射调用

再来一个示例说明反射的方便的地方

有的web框架就用反射来做URL路由,通过下面示例我想你应该了解了反射

示例功能:通过用户输入不同的字符串,执行不同的函数

正常调用(如果方法多不好写了)

反射调用(不管多少方法)

上面示例都是基于类来做的解释,基本已能说明反射的用途。

2、从模块中取成员

模块是一样的,下面看看模块成员及调用,你就明白了。

模块成员

模块成员的反射调用

本文地址:http://www.reviewcode.cn/yunweiguanli/241075.html 转载请注明出处!

今日热点资讯