zoukankan      html  css  js  c++  java
  • 反射

    1.反射的基本函数

    python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    class Foo(object):
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def talk(self):
            print 'i am alex%s'%self.name
    
    obj=Foo('alex',18)
    print Foo.__dict__
    # #### 检查是否含有成员 ####
    print hasattr(obj,'name')
    print hasattr(obj,'talk')
    print hasattr(obj,'aaa')
    # #### 获取成员 ####
    func=getattr(obj,'talk')
    func()
    print getattr(obj,'name')
    #以下不常用
    # #### 设置成员 ####
    setattr(obj, 'age', 18)
    setattr(obj, 'show', lambda num: num + 1)
    # #### 删除成员 ####
    delattr(obj, 'name')
    delattr(obj, 'func')

    2.动态加载模块,并获取方法

    index文件

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    control,action=raw_input('请输入需要执行的函数:').split('/')
    
    #动态加载模块
    modules=__import__(control)
    #判断需要加载的方法是否存在
    if hasattr(modules,action):
        #获取方法
        func=getattr(modules,action)
        #执行方法
        print func()
    else:
        #方法不存在,返回404错误
        print '404 error'

    home文件

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    def func1():
        return 'this is func1'
    
    def func2():
        return 'this is func2'
    
    def func3():
        return 'this is func3'
  • 相关阅读:
    向日葵、阳光
    laravel还是给我太多惊喜了
    滴滴笔试题——小试牛刀
    剑指offer——二叉搜索树的后序遍历序列
    2019春招美团笔试
    首次实习生招聘会——航天一院
    有趣的数字
    剑指offer——从上往下打印二叉树
    剑指offer——栈的压入、弹出序列
    剑指offer——包含min函数的栈
  • 原文地址:https://www.cnblogs.com/yanhongjun/p/5297419.html
Copyright © 2011-2022 走看看