詳解python如何根據參數不同調用不同的類和方法
python 根據參數不同,調用不同的類和方法
1. 使用字典映射類:
創(chuàng)建一個字典,其中鍵是參數值或參數值對應的字符串,值是對應的類。然后,你可以根據參數從字典中獲取類,并創(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") # 使用函數根據參數調用不同的類方法 call_class_method('class1',"method","123") # 輸出: Class1 method called call_class_method('class2',"method","456") # 輸出: Class2 method called
2. 使用工廠函數或方法:
工廠函數或方法可以根據傳入的參數返回不同的類實例。這種方法更靈活,允許你在返回實例之前進行額外的邏輯處理。
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") # 使用工廠函數創(chuàng)建實例并調用方法 instance = create_instance('class1') instance.method() # 輸出: Class1 method called
3. 使用策略模式:
如果你的類實現了相同的接口(即它們都有相同的方法),你可以使用策略模式。策略模式定義了一系列的算法,并將每一個算法封裝起來,使它們可以互相替換。策略模式使得算法可以獨立于使用它的客戶端變化。
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如何根據參數不同調用不同的類和方法的文章就介紹到這了,更多相關python根據參數調用類和方法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python GUI庫圖形界面開發(fā)之PyQt5線程類QThread詳細使用方法
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5線程QThread類詳細使用方法,需要的朋友可以參考下2020-02-02在Python的Django框架中獲取單個對象數據的簡單方法
這篇文章主要介紹了在Python的Django框架中獲取單個對象數據的簡單方法,Django為數據的操作提供了諸多方便的功能,需要的朋友可以參考下2015-07-07