python介面自動化學習七之反射詳解

2021-10-08 09:19:06 字數 2134 閱讀 9252

反射:通過字串去操作物件的屬性和方法,是字串形式.

可進行反射操作的物件:例項化物件、類、其他模組、本模組

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...