首页 > 代码库 > learn_Day14 内置函数补充、反射、初识面向对象

learn_Day14 内置函数补充、反射、初识面向对象

内置函数

  • __import__()用于导入模块
  • getattr 用于寻找模块的指定对象
    • a = __import__(‘b’)  # b为模块名,b是字符串 ==>> 导入模块b并重新命名为a
    • c = getattr(a,’d’)  # d为模块中指定对象 ==>> 找到模块中命名为d的对象
    • d() ==>> 执行d
# getattr(a,’b’, c)  # 从a模块中导入b。c参数可不写表示找不到报错;c为None表示找不到不报错,返回None。
# hasattr(a,’b’)  # 判断a中b模块是否存在。
# setattr(a,’b’, c)  # 在内存中我模块a创建b=c。
# delattr(a,’b’)  # 在内存中删除模块a中的b。

 


 反射

定义:根据字符串去某个对象中去操作其成员

  • 通过字符串形式导入模块
  • 通过字符串形式去模块中寻找并执行

技术分享

例1:导入lib/account中的a并执行

技术分享
# /usr/local/bin/python
# -*- coding: utf-8 -*-
# Author: Ren Hang


def login():
    return "login"


def logout():
    return "logout"


def nb():
    return "niu"
lib/accoutn/a

技术分享

技术分享

例2:模拟web框架

# 模拟web框架
from lib.account import a
url = input("shuru:")
inp = url.split(‘/‘)[-1]
if hasattr(a, inp):
    target_func = getattr(a, inp)
    r = target_func()
    print(r)
else:
    print("404")

 

learn_Day14 内置函数补充、反射、初识面向对象