初学Python-反射 装饰器 面向对象编程 异常处理 断言
2017-04-23 21:16 Eilleen-G 阅读(237) 评论(0) 编辑 收藏 举报1 反射
以字符串的形式导入模块
以字符串的形式执行模块
#!usr/bin/env python #coding:utf-8 #反射 ##网页链接 ,规范xxx/xxx #account/login data=raw_input('请输入地址:') array=data.split('/') #account[0]=account userspance=__import__('backend.'+array[0])#读取文件夹 module=getattr(userspance,array[0])#读取文件夹下的模块 func=getattr(module,array[1])#读取文件夹下的模块的函数 func() ''' accout.py def login(): print('login') def logout(): print('logout') admin.py def index(): print('欢迎登陆后台管理') '''
2 装饰器
#!usr/bin/env python #coding:utf-8 #װ装饰器 #不带参数 不带返回值 def outer(fun): #1 def wrapper():# 3 6 ''' 在所有函数前加东西 7 ''' fun() # 8 ''' 在所有函数前后东西 10 ''' return wrapper #4 此时Func1()里面是 wrapper函数 @outer #2其实是传参数 fun=Func1 def Func1(): print 'func1' # 9 @outer #2其实是传参数 fun=Func1 def Func2(): print 'func2' # 9 @outer #2其实是传参数 fun=Func1 def Func3(): print 'func3' # 9 ''' 此处省略N个函数 ''' Func1() Func2() Func3() #5 ''' Func1= def wrapper():# 3 6 可以加参数 #在所有函数前加东西 7 fun() # 8 # 在所有函数前后东西 10 ''' #带参数 def outer(fun): #1 def wrapper(arg):# 3 6 ''' 在所有函数前加东西 7 ''' fun(arg) # 8 ''' 在所有函数前后东西 10 ''' return wrapper #4 此时Func1()里面是 wrapper函数 @outer #2其实是传参数 fun=Func1 def Func1(arg): print 'func1' ,arg # 9 ''' 此处省略N个函数 ''' Func1('ffdfvdv') #5 ''' Func1= def wrapper(arg):# 3 6 可以加参数 #在所有函数前加东西 7 fun(arg) # 8 # 在所有函数前后东西 10 ''' #带参数带返回值 def outer(fun): #1 def wrapper(arg):# 3 6 ''' 在所有函数前加东西 7 ''' result=fun(arg) # 8 ''' 在所有函数前后东西 10 ''' return result return wrapper #4 此时Func1()里面是 wrapper函数 @outer #2其实是传参数 fun=Func1 def Func1(arg): print 'func1' ,arg # 9 return 'return' ''' 此处省略N个函数 ''' response=Func1('ffdfvdv') #5 print response ''' Func1= def wrapper(arg):# 3 6 可以加参数 #在所有函数前加东西 7 fun(arg) # 8 # 在所有函数前后东西 10 return result '''
3 面向对象
#面向对象 #静态字段属于类,动态字段属于对象 class Province: ##字段 memo='中国的23个省之一'##静态字段 def __init__(self,name,capital,leader):#类的方法 self.Name=name#动态字段 self.Capital=capital self.Leader=leader #方法 #动态方法(对象访问)创建对象 def sports_meet(self): print self.Name+'正在开运动会' def eath_lunch(self): print self.Leader+'正在吃午饭' #静态方法(类访问) (可以不用创建对象) @staticmethod def foo(): print'每个省都在反腐' #特性(加装饰器) @property def Bar(self): print self.Name #return 'something' sd=Province('山东','济南','王胜辉') hb=Province('河北','石家庄','李亚') ##访问字段#################类(静态字段)对象(动态字段) print Province.memo #print Province.Capital#类不能访问动态字段 print hb.Capital print hb.memo#对象可以访问静态字段 ##访问方法################类(静态方法)对象(动态方法) hb.sports_meet() sd.sports_meet() sd.eath_lunch() Province.foo()#()类不能访问动态方法,加上@staticmethod再去掉self就是静态方法 ##访问特性###############与访问字段方法一样 hb.Bar
#!usr/bin/env python #coding:utf-8 #面向对象 #静态字段属于类,动态字段属于对象 class Province: ##字段 memo='中国的23个省之一'##静态字段 def __init__(self,name,capital,leader,flag):#类的方法 self.Name=name#动态字段 self.Capital=capital self.Leader=leader #####私有字段 外部访问不到(得二次访问) self.__Thailand=flag #方法 #动态方法(对象访问) def sports_meet(self): print self.Name+'正在开运动会' def eath_lunch(self): print self.Leader+'正在吃午饭' ###私有字段写入 def show(self): print self.__Thailand ####私有方法 def __sha (self): print'输出是' def show2(self): self.__sha() #静态方法(类访问) @staticmethod def foo(): print'每个省都在反腐' #特性(加装饰器) @property def Bar(self): print self.Name #return 'something' #读私有字段 @property def Thailand(self): print self.__Thailand #sd=Province('山东','济南','王胜辉',gy) #hb=Province('河北','石家庄','李亚',vhvg) JP=Province('日本','fvsvsv','fcvz',True) ##访问字段#################类(静态字段)对象(动态字段) #print Province.memo ###print Province.Capital#类不能访问动态字段 #print hb.Capital #print hb.memo#对象可以访问静态字段 #print JP.__Thailand#私有字段 外部不能访问 ##访问方法################类(静态方法)对象(动态方法) #hb.sports_meet() #sd.sports_meet() #sd.eath_lunch() JP.show() #JP.sha()#外部不能访问私有方法 JP.show2() #Province.foo()#类不能访问动态方法,加上@staticmethod再去掉self就是静态方法 ##访问特性###############与访问字段方法一样 #hb.Bar JP.Thailand JP.Thailand=False print JP.Thailand
class test1:#可读可写(经典类)不常用 def __init__(self): self.__pravite='1111'########一定是双_ @property def show(self): return self.__pravite t1=test1() print t1.show t1.show='11111111111111111' print t1.show class test2(object):##读写分开(新式类)常用 def __init__(self): self.__pravite='2222' @property def show(self): return self.__pravite @show.setter def show(self,value): self.__pravite=value t2=test2() print t2.show#########不能加括号 t2.show='22222222222222222222' print t2.show