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

2021-10-04 17:00:14 字數 1888 閱讀 6896

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

# 我們有三個圖形類

# circle,********,rectangle

# 他們都有乙個獲取圖形面積的方法,但是方法名字不同,我們可以實現乙個統一

# 的獲取面積的函式,使用每種方法名進行嘗試,呼叫相應類的介面

# import math

# class ********:

# def __init__(self,a,b,c):

# self.a,self.b,self,c = a,b,c##

# def get_area(self):

# a,b,c = self.a,self.b,self.c

# p = (a+b+c)/2

# return (p * (p-a)*(p-b)*(p-c)) ** 0.5##

# class rectangle:

# def __init__(self,a,b):

# self.a,self.b = a,b

## def getarea(self):

# return self.a * self.b

## class circle:

# def __init__(self,r):

# self.r = r

## def area(self):

# # return self.r ** 2 * math.pi

# return self.r ** 2 * 3.14159

# from lib1 import ********

# from lib2 import rectangle

# from lib3 import circle

shape1 = ********(3,

4,5)

# 三角形 例項化

shape2 = rectangle(4,

6)# 矩形

shape3 = circle(1)

# 圓def

get_area

(shape)

: method_name =

['get_area'

,'getarea'

,'area'

]for name in method_name:

f =getattr

(shape, name,

none

)if f:

return f(

)# print(get_area(shape2)) # 24

# print(get_area(shape1)) # 6.0

# print(get_area(shape3)) # 3.14159

# 用map函式呼叫(map會對提供的函式對指定序列作對映)

shape_list =

[shape1,shape2,shape3]

arcs_list =

list

(map

(get_area,shape_list)

)print

(arcs_list)

print

(list

(map

(get_area,shape_list)))

# def demo(x):

# return x ** 2

# demo(2) # --> 4

# map(demo,[1,2,3]) # -->

# list(map(demo,[1,2,3])) # -->[1,4,9]

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

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

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

字串例項可以呼叫的方法

在底層,字串是以字元陣列的形式儲存的,var str hello h e l l o 對字串的操作方法與對陣列的操作類似 console.log str.length 5 length可以用來獲取字串的長度 console.log str 3 i 索引charat 可以返回字串中指定為之的字元,根據...