python如何通過實例方法名字調(diào)用方法
本文實例為大家分享了python通過實例方法名字調(diào)用方法的具體代碼,供大家參考,具體內(nèi)容如下
案例:
某項目中,我們的代碼使用的2個不同庫中的圖形類:
Circle,Triangle
這兩個類中都有一個獲取面積的方法接口,但是接口的名字不一樣
需求:
統(tǒng)一這些接口,不關(guān)心具體的接口,只要我調(diào)用統(tǒng)一的接口,對應(yīng)的面積就會計算出來
如何解決這個問題?
定義一個統(tǒng)一的接口函數(shù),通過反射:getattr進行接口調(diào)用
#!/usr/bin/python3 from math import pi class Circle(object): def __init__(self, radius): self.radius = radius def getArea(self): return round(pow(self.radius, 2) * pi, 2) class Rectangle(object): def __init__(self, width, height): self.width = width self.height = height def get_area(self): return self.width * self.height # 定義統(tǒng)一接口 def func_area(obj): # 獲取接口的字符串 for get_func in ['get_area', 'getArea']: # 通過反射進行取方法 func = getattr(obj, get_func, None) if func: return func() if __name__ == '__main__': c1 = Circle(5.0) r1 = Rectangle(4.0, 5.0) # 通過map高階函數(shù),返回一個可迭代對象 erea = map(func_area, [c1, r1]) print(list(erea))
通過標(biāo)準(zhǔn)庫operator中methodcaller方法進行調(diào)用
#!/usr/bin/python3
from math import pi
from operator import methodcaller
class Circle(object):
def __init__(self, radius):
self.radius = radius
def getArea(self):
return round(pow(self.radius, 2) * pi, 2)
class Rectangle(object):
def __init__(self, width, height):
self.width = width
self.height = height
def get_area(self):
return self.width * self.height
if __name__ == '__main__':
c1 = Circle(5.0)
r1 = Rectangle(4.0, 5.0)
# 第一個參數(shù)是函數(shù)字符串名字,后面是函數(shù)要求傳入的參數(shù),執(zhí)行括號中傳入對象
erea_c1 = methodcaller('getArea')(c1)
erea_r1 = methodcaller('get_area')(r1)
print(erea_c1, erea_r1)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python中的實例方法、靜態(tài)方法、類方法、類變量和實例變量淺析
- 淺談python中的實例方法、類方法和靜態(tài)方法
- 深入解析python中的實例方法、類方法和靜態(tài)方法
- python解析json實例方法
- Python類的動態(tài)修改的實例方法
- python實現(xiàn)系統(tǒng)狀態(tài)監(jiān)測和故障轉(zhuǎn)移實例方法
- python的類方法和靜態(tài)方法
- Python探索之靜態(tài)方法和類方法的區(qū)別詳解
- Python面向?qū)ο笾o態(tài)屬性、類方法與靜態(tài)方法分析
- Python實例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解
相關(guān)文章
Python通過DOM和SAX方式解析XML的應(yīng)用實例分享
這篇文章主要介紹了Python通過DOM和SAX方式解析XML的應(yīng)用實例分享,針對這兩種解析方式Python都有相關(guān)的模塊可供使用,需要的朋友可以參考下2015-11-11
Python使用回溯法子集樹模板獲取最長公共子序列(LCS)的方法
這篇文章主要介紹了Python使用回溯法子集樹模板獲取最長公共子序列(LCS)的方法,簡單描述了最長公共子序列問題并結(jié)合實例形式分析了Python基于回溯法子集樹模板獲取最長公共子序列的操作步驟與相關(guān)注意事項,需要的朋友可以參考下2017-09-09
使用TensorFlow對圖像進行隨機旋轉(zhuǎn)的實現(xiàn)示例
這篇文章主要介紹了使用TensorFlow對圖像進行隨機旋轉(zhuǎn)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
python實現(xiàn)txt文件格式轉(zhuǎn)換為arff格式
這篇文章主要為大家詳細介紹了python實現(xiàn)txt文件格式轉(zhuǎn)換為arff格式的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05
Python with語句上下文管理器兩種實現(xiàn)方法分析
這篇文章主要介紹了Python with語句上下文管理器兩種實現(xiàn)方法,結(jié)合實例形式較為詳細的分析了Python上下文管理器的相關(guān)概念、功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-02-02
Python?subprocess.Popen?實時輸出?stdout的解決方法(正確管道寫法)
這篇文章主要介紹了Python?subprocess.Popen實時輸出stdout正確管道寫法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
pandas 強制類型轉(zhuǎn)換 df.astype實例
這篇文章主要介紹了pandas 強制類型轉(zhuǎn)換 df.astype實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

