python從字符串解析方法名


  方法如下

import requests
func_name = 'get'
fn_obj = getattr(requests,func_name)
fn_obj('http://www.baidu.com')

如果是當前文件的方法

test.py

import sys
def fn():
    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__])
    # <module '__main__' from '**/test.py'>

查看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的對象(類對象或者函數對象)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM