【python学习笔记】Python反射机制

说明

说到反射,让人熟知的eval函数,python除了这个函数,还有import() ,getattr、hasattr、setattr、delattr等方法

eval函数

class Test(object):
    def __init__(self):
        self.name = 'leason'

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


if __name__ == "__main__":
    eval_test = eval('Test()')
    print  eval_test.name


<< leason

import()方法

import方法实际上是import导入模块的另一种方式

//效果相同
import  leason
__import__('leason') 

//多层导入
1. from app.serve import leason 
2. __import__('app.serve.leason',fromlist=True) #如果不加上fromlist=True,只会导入list目录

操作成员getattr、hasattr、setattr、delattr

getattr、hasattr、setattr、delattr 获取成员、检查成员、设置成员、删除成员

class Test(object):

    def __init__(self):
        self.name = 'leason'

    def func(self):
        return True

obj = Test()
#获取成员
ret = getattr(obj, 'func')#获取的是个对象
r = ret()
print(r)

#检查成员
ret = hasattr(obj,'func')#因为有func方法所以返回True
print(ret)

#设置成员
print(obj.name) #设置之前为:leason
ret = setattr(obj,'name','leason1')
print(obj.name) #设置之后为:leason1

#删除成员
print(obj.name) #leason
delattr(obj,'name')
print(obj.name) #报错

leason | 个人博客

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值