标签:
一 、反射(根据字符串的形式去对象(某个模块)中操作成员)
python中的反射功能是有以下四个内置函数提供:hahasattr、getattr、aetattr、delattr,这四个函数分别用于对对象内部执行:检查是否含有某成员,获取成员、设置成员、删除成员
1、通过字符串的形式来导入模块
inp=input("请输入模块名:") mo=__import__(inp)
2、通过字符串的形式,在模块中寻找指定的函数,并执行
两种情况:1、如果在同级目录下面直接用__import__("xxxx")
2、如果不在同一级目录下面(目录嵌套)用__import__("xxx.xxxx.xxx",fromlist=True)
# getattr
inp = input("请输入模块名:") #以字符串的形式导入模块 mo = __import__(inp) inm = input("请输入函数名:") #以字符串的形式在模块中找方法 相当于form xxx import xxx f = getattr(mo,inm) f()
getattr(模块名,"xxx",None) 去模块中找xxx,如果没有没有找到则报错,我们也可以设置默认值None 如果没有找到则返回None(不报错)
hasattr(模块名,"xxx")根据字符串的形式判断xxx是否存在
setattr(模块名,"xxx",xxx)在内存中为某个模块设置一个东西
import asd print(hasattr(asd,"age")) setattr(asd,"age",18) print(hasattr(asd,"age")) False True
delattr(模块名,"xxx") 在内存中删除某个东西
import asd print(hasattr(asd,"name")) #以前有 delattr(asd,"name") #现在删除 print(hasattr(asd,"name")) True False
基于反射实现类web框架的路由系统
import asd url=input("请输入网址:") new=url.split("/") ret=hasattr(asd,new[1]) #用户直接输入网址www.xxxxxx/方法 就可以执行方法 if ret: r=getattr(asd,new[1]) r() else: print("404")
url=input("请输入模块名/方法:") mo,faf=url.split("/") m=__import__("xxx."+mo) ret=hasattr(m,faf) #用户通过输入模块名/犯法就可以从任意的一个模块下执行任意一个方法 if ret: r=getattr(m,faf) r() else: print("404")
二、面向对象
概述:
面向过程:根据业务逻辑从上到下垒代码
函数式编程:将某功能代码分装到函数中,日后便无需再写,直接调用
面向对象:
创建类和对象
面向对象编程是一种编程方式,此编程方式的使用需要使用 “类” 和 “对象”实现,所以面向对象就是对类和对象的使用
(类中函数的第一个参数必须是self)
class f: def f1(self): pass def f2(self): pass obj=f() obj.f1()
面向对象的三大特性:
封装,继承和多态
1、封装,顾名思义就是把内容分装到某个地方
所以在使用面向对象的封装功能时:1、将内容分装到某处
2、从某处调用封装的函数
标签:
原文地址:http://www.cnblogs.com/luxiaojun/p/5547677.html