反射:通過字串去操作物件的屬性和方法,是字串形式.
可進行反射操作的物件:例項化物件、類、其他模組、本模組
getattr() 根據字串的形式去物件中尋找東西
hasattr() 根據字串的形式去某個物件中判斷東西是否存在
setattr() 根據字串的形式去某個物件中設定東西
delattr() 根據字串的形式去某個物件中刪除東西
假設乙個檔案為login.py,**如下
def index():
def login():
print('登陸成功')
def logout():
print('退出系統')
str1='我是str1'
class person(object):
def __init__(self):
pass
def info(self):
print('我是person類的info方法')
對其他模組、例項化物件進行反射操作
import login
#通過login模組找到logout函式,並且呼叫它
f=getattr(login,'logout') #即對其它模組進行反射操作
f()#如何找到person類中的方法並且呼叫它
obj=login.person()
if hasattr(obj,'info'):#即對例項化物件進行反射操作
f=getattr(obj,'info')
f()else:
print('sorry')
#根據字串形式往物件中新增exit屬性
f=setattr(obj,'exit','this is exit method')
f2=hasattr(obj,'exit')
print(f2)
#根據字串形式往物件中刪除exit屬性
f=delattr(obj,'exit')
f3=hasattr(obj,'exit')
print(f3)
f=getattr(login,'str1')
print(f)
if hasattr(login,'str2'):
print(getattr(login,'str2'))
else:
f=setattr(login,'str2','我是str2')
print('我是setattr之後的結果')
print(getattr(login,'str2'))
對類名進行反射操作
class a:
country = "中國"
area = "深圳"
def __init__(self, name, age):
self.name = name
self.age = age
def func(self):
print(666)
# 獲取類 a 的屬性 country
print(getattr(a, "country")) # 中國
# 獲取類 a 的屬性 area
print(getattr(a, "area")) # 深圳
import sys
def func():
print(666)
ret = input("請輸入: ").strip()
obj = sys.modules[__name__]
getattr(obj, ret)()
url=raw_input("請輸入路由位址")
target_models,target_function=url.split('/')
m=__import__(target_models)
if hasattr(m,target_function):
target_function=getattr(m,target_function)
target_function()
else:
print("not found 404")
python介面自動化學習之函式三
可復用 可讀性強 def add a,b return a b print add 2,3 a指向2,b指向3 print add a 3,b 2 a指向3,b指向2 print add b 3,a 2 a指向2,b指向3函式中可以定義預設引數,但是預設引數要放在後面,非預設引數要放到前面。使用函式...
python介面自動化學習之路(4)
1.迴圈讀取excel裡的case 2.將響應結果寫入乙個新的excel 需要引入xlwt import requests import xlrd import json import xlutils import xlwt import time excelfile r users documen...
python介面自動化學習五之函式案例實戰
usr bin env python coding utf 8 author liulingling 要求 實現註冊功能,登陸成功後 返回暱稱 def inout username input 請輸入賬號 password input 請輸入密碼 return username,password d...