欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python如何通過實例方法名字調用方法

 更新時間:2018年03月21日 11:19:18   作者:北門吹雪  
這篇文章主要為大家詳細介紹了python如何通過實例方法名字調用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python通過實例方法名字調用方法的具體代碼,供大家參考,具體內容如下

案例:

       某項目中,我們的代碼使用的2個不同庫中的圖形類:

              Circle,Triangle

       這兩個類中都有一個獲取面積的方法接口,但是接口的名字不一樣

       需求:

              統(tǒng)一這些接口,不關心具體的接口,只要我調用統(tǒng)一的接口,對應的面積就會計算出來

如何解決這個問題?

定義一個統(tǒng)一的接口函數,通過反射:getattr進行接口調用

#!/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高階函數,返回一個可迭代對象
 erea = map(func_area, [c1, r1])
 print(list(erea)) 

通過標準庫operator中methodcaller方法進行調用

#!/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)
  
 # 第一個參數是函數字符串名字,后面是函數要求傳入的參數,執(zhí)行括號中傳入對象
 erea_c1 = methodcaller('getArea')(c1)
 erea_r1 = methodcaller('get_area')(r1)
 print(erea_c1, erea_r1)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python中實現(xiàn)php的var_dump函數功能

    python中實現(xiàn)php的var_dump函數功能

    這篇文章主要介紹了python中實現(xiàn)php的var_dump函數功能,var_dump函數在PHP中調試時非常實用,本文介紹在Python中實現(xiàn)這個函數,需要的朋友可以參考下
    2015-01-01
  • python實現(xiàn)多線程及線程間通信的簡單方法

    python實現(xiàn)多線程及線程間通信的簡單方法

    這篇文章主要為大家介紹了python實現(xiàn)多線程及線程間通信的簡單方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Python使用pymeter操作JMeter的教程詳解

    Python使用pymeter操作JMeter的教程詳解

    pymeter?是一個?Python?庫,它可以以編程方式創(chuàng)建和運行?JMeter?測試計劃,下面就跟隨小編一起來看看Python如何使用pymeter操作JMeter的吧
    2024-01-01
  • python常見的格式化輸出小結

    python常見的格式化輸出小結

    今天在寫代碼的時候,需要統(tǒng)一化輸出格式進行,一時想不起竟具體細節(jié),用了最笨的方法,所以覺得有必要將常見的方法進行一個總結。下面這篇文中就給大家總結了python中常見的格式化輸出,比如打印字符串、打印整數和打印浮點數等,下面來看看詳細的輸出方法吧。
    2016-12-12
  • Python隨機函數random隨機獲取數字、字符串、列表等使用詳解

    Python隨機函數random隨機獲取數字、字符串、列表等使用詳解

    這篇文章主要介紹了Python隨機函數random使用詳解包含了Python隨機數字,Python隨機字符串,Python隨機列表等,需要的朋友可以參考下
    2021-04-04
  • Python中return self的用法詳解

    Python中return self的用法詳解

    這篇文章主要介紹了Python中return self的用法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • Python分支結構(switch)操作簡介

    Python分支結構(switch)操作簡介

    這篇文章主要介紹了Python分支結構(switch)操作簡介,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python的ini配置文件你了解嗎

    Python的ini配置文件你了解嗎

    這篇文章主要為大家詳細介紹了Python的ini配置文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 詳解python網絡進程

    詳解python網絡進程

    進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進程既是基本的分配單元,也是基本的執(zhí)行單元。本文將介紹python實現(xiàn)網絡進程
    2021-06-06
  • python字符串定義的三種方式

    python字符串定義的三種方式

    在Python中,字符串是一個非常重要的數據類型,可用來存儲和操作文本數據,本文主要介紹了python字符串定義的三種方式,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05

最新評論