码迷,mamicode.com
首页 > 编程语言 > 详细

Python 反射

时间:2020-03-12 11:29:27      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:code   getattr   name   src   end   pre   解释器   对象   lib   

  在程序开发中,常常会遇到这样的需求:在执行对象中的某个方法,或者在调用对象的某个变量,但是由于一些原因,我们无法确定或者并不知道该方法或者变量是否存在,这时我们需要一个特殊的方法或者机制来访问或操作该未知的方法或变量,这种机制就被称之为反射。

  反射机制:反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块中寻找指定方法和属性,对其进行操作。也就是利用字符串的形式去对象(模块)中操作(查找or获取or删除or添加)成员。

方法说明:

hasattr(obj,name_str)                             判断objec是否有name_str这个方法或者属性

getattr(obj,name_str,default)                 获取object对象中与name_str同名的方法或者函数,没有默认返回default

setattr(obj,name_str,value)                   为object对象设置一个以name_str为名的value方法或者属性

delattr(obj,name_str)                             删除object对象中的name_str属性

class auth():

    def __init__(self,name):
        self.name = name

    def send(self):
        return {},Func:send.format(self.name)

    def get(self):
        return {},Func:get.format(self.name)


Auth = auth(jack)


print(hasattr(Auth,name))
print(getattr(Auth,sen1d,object)())
print(setattr(Auth,count,lambda x:x**x))
print(delattr(Auth,name))                     #删除的必须写属性,方法是不行的

 反射实例:

动态导入模块

技术图片

import importlib
 
__import__(‘import_lib.metaclass‘) #这是解释器自己内部用的
#importlib.import_module(‘import_lib.metaclass‘) #与上面这句效果一样,官方建议用这个

1、

2、

 

Python 反射

标签:code   getattr   name   src   end   pre   解释器   对象   lib   

原文地址:https://www.cnblogs.com/chimeiwangliang/p/12449215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!