python 通過方法名字的字串呼叫方法

2021-08-27 00:15:03 字數 905 閱讀 5367

from lib1 import circle

from lib2 import ********

from lib3 import rectangle

from operator import methodcaller

defget_area

(shape, method_name = ['area', 'get_area', 'getarea']):

#'area', 'get_area', 'getarea'分別是三個圖形面積的方法字串

for name in method_name:

if hasattr(shape, name): #檢視是否有這個屬性 既物件是否有這個方法

return methodcaller(name)(shape) #(shape)傳例項就會呼叫執行該方法

defget_area2

(shape, method_name = ['area', 'get_area', 'getarea']):

for name in method_name:

f = getattr(shape, name, none) #獲取物件的方法,如果沒有改方法就返回none

if f:

return f()

shape1 = circle(1)

shape2 = ********(3, 4, 5)

shape3 = rectangle(4, 6)

shape_list = [shape1, shape2, shape3]

# 獲得面積列表

area_list = list(map(get_area, shape_list))

print(area_list)

37 通過例項方法名字的字串呼叫方法

某專案中,使用了三個不同庫中的圖形類 circle,rectangle,它們都有乙個獲取圖形面積的介面 方法 但方法名字不同。要求 實現乙個統一的獲取面積的函式,使用各種方法名進行嘗試,呼叫相應類的介面。解決方案 使用內建函式getattr 通過名字獲取方法物件,然後呼叫。使用標準庫operator...

例項方法名字的字串呼叫方法

通過例項方法名字的字串呼叫方法 我們有三個圖形類 circle,rectangle 他們都有乙個獲取圖形面積的方法,但是方法名字不同,我們可以實現乙個統一 的獲取面積的函式,使用每種方法名進行嘗試,呼叫相應類的介面 import math class def init self,a,b,c self...

python從字串解析方法名

方法如下 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...