詳解python如何根據(jù)參數(shù)不同調用不同的類和方法
python 根據(jù)參數(shù)不同,調用不同的類和方法
1. 使用字典映射類:
創(chuàng)建一個字典,其中鍵是參數(shù)值或參數(shù)值對應的字符串,值是對應的類。然后,你可以根據(jù)參數(shù)從字典中獲取類,并創(chuàng)建實例或調用其方法。
class Class1:
def method(self):
print("Class1 method called")
class Class2:
def method(self):
print("Class2 method called")
# 創(chuàng)建類到字典的映射
class_map = {
'class1': Class1,
'class2': Class2,
}
def call_class_method(class_key,method,value):
# 從字典中獲取類
Class = class_map.get(class_key)
if Class is not None:
# 創(chuàng)建實例并調用方法
instance = Class()
#instance.method()
getattr(instance,method)(value)
else:
print("Invalid class key")
# 使用函數(shù)根據(jù)參數(shù)調用不同的類方法
call_class_method('class1',"method","123") # 輸出: Class1 method called
call_class_method('class2',"method","456") # 輸出: Class2 method called
2. 使用工廠函數(shù)或方法:
工廠函數(shù)或方法可以根據(jù)傳入的參數(shù)返回不同的類實例。這種方法更靈活,允許你在返回實例之前進行額外的邏輯處理。
def create_instance(class_key, *args, **kwargs):
if class_key == 'class1':
return Class1(*args, **kwargs)
elif class_key == 'class2':
return Class2(*args, **kwargs)
else:
raise ValueError("Invalid class key")
# 使用工廠函數(shù)創(chuàng)建實例并調用方法
instance = create_instance('class1')
instance.method() # 輸出: Class1 method called
3. 使用策略模式:
如果你的類實現(xiàn)了相同的接口(即它們都有相同的方法),你可以使用策略模式。策略模式定義了一系列的算法,并將每一個算法封裝起來,使它們可以互相替換。策略模式使得算法可以獨立于使用它的客戶端變化。
from abc import ABC, abstractmethod
class Strategy(ABC):
@abstractmethod
def execute(self):
pass
class ConcreteStrategyA(Strategy):
def execute(self):
return "Strategy A"
class ConcreteStrategyB(Strategy):
def execute(self):
return "Strategy B"
class Context:
def __init__(self, strategy):
self.strategy = strategy
def set_strategy(self, strategy):
self.strategy = strategy
def execute_strategy(self):
return self.strategy.execute()
# 使用策略模式
context = Context(ConcreteStrategyA())
print(context.execute_strategy()) # 輸出: Strategy A
context.set_strategy(ConcreteStrategyB())
print(context.execute_strategy()) # 輸出: Strategy B
到此這篇關于詳解python如何根據(jù)參數(shù)不同調用不同的類和方法的文章就介紹到這了,更多相關python根據(jù)參數(shù)調用類和方法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python GUI庫圖形界面開發(fā)之PyQt5線程類QThread詳細使用方法
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5線程QThread類詳細使用方法,需要的朋友可以參考下2020-02-02
在Python的Django框架中獲取單個對象數(shù)據(jù)的簡單方法
這篇文章主要介紹了在Python的Django框架中獲取單個對象數(shù)據(jù)的簡單方法,Django為數(shù)據(jù)的操作提供了諸多方便的功能,需要的朋友可以參考下2015-07-07
python轉換wrf輸出的數(shù)據(jù)為網(wǎng)頁可視化json格式
這篇文章主要介紹了python轉換wrf輸出的數(shù)據(jù)為網(wǎng)頁可視化json格式,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

