方法如下
import requests
func_name =
'get'
fn_obj =
getattr
(requests,func_name)
fn_obj(
'')
如果是當前檔案的方法
test.py
'''
'''import sys
deffn()
:print
('hello world'
)func_name = fn.__name__
fn_obj =
getattr
(sys.modules[__name__]
, func_name)
# 根據函式名(func_name),獲得函式物件
fn_obj(
)# hello world
這個的用處是
有時我們需要將乙個檔案的資訊(類、函式及變數)儲存到檔案,我們不能直接儲存函式物件,而是將其轉化為fn.__ name__,問題來了,當我們想通過讀取檔案的形式重新配置這些類、函式時,該如何把這些字串轉換為對應的函式物件呢?
print
(sys.modules[__name__]
)#
檢視getattr的doc,
getattr
(object
, name[
, default])-
> value. get a named attribute from an object
;getattr
(x, 『y』)
is equivalent to x.y. when a default argument is given, it is returned when the attribute doesn』t exist; without it, an exception is raised in that case.
所以,getattr(sys.modules[__ name__], func_name)的含義便是找到當前檔案下名稱為func_name的物件(類物件或者函式物件)。 python從字串解析方法名
方法如下 import requests func name get fn obj getattr requests,func name fn obj 如果是當前檔案的方法 test.py import sysdef fn print hello world func name fn.name fn...
python 通過方法名字的字串呼叫方法
from lib1 import circle from lib2 import from lib3 import rectangle from operator import methodcaller defget area shape,method name area get area geta...
例項方法名字的字串呼叫方法
通過例項方法名字的字串呼叫方法 我們有三個圖形類 circle,rectangle 他們都有乙個獲取圖形面積的方法,但是方法名字不同,我們可以實現乙個統一 的獲取面積的函式,使用每種方法名進行嘗試,呼叫相應類的介面 import math class def init self,a,b,c self...