脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - 详解python如何根据参数不同调用不同的类和方法

详解python如何根据参数不同调用不同的类和方法

2024-03-27 10:27车载testing Python

这篇文章主要为大家详细介绍了在python中如何根据参数不同调用不同的类和方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

python 根据参数不同,调用不同的类和方法

1. 使用字典映射类:

创建一个字典,其中键是参数值或参数值对应的字符串,值是对应的类。然后,你可以根据参数从字典中获取类,并创建实例或调用其方法。

class Class1:  
    def method(self):  
        print("Class1 method called")  

class Class2:  
    def method(self):  
        print("Class2 method called")  

# 创建类到字典的映射  
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:  
        # 创建实例并调用方法  
        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")  

# 使用工厂函数创建实例并调用方法  
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根据参数调用类和方法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/huage926/article/details/136884804

延伸 · 阅读

精彩推荐
  • PythonPython中字典的使用方法及实例

    Python中字典的使用方法及实例

    在Python中,字典(dictionary)是一种非常有用的数据类型。它可以存储键值对,并且能够根据键来访问值。字典是无序的,但是在Python3.7之后,字典也开始保...

    是萧萧吖11222023-10-20
  • Pythonpython中matplotlib的颜色及线条控制的示例

    python中matplotlib的颜色及线条控制的示例

    这篇文章主要介绍了python中matplotlib的颜色及线条控制的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Purogram10972021-01-22
  • PythonPython实现爬虫从网络上下载文档的实例代码

    Python实现爬虫从网络上下载文档的实例代码

    小编最近在研究python,接触到了爬虫,本文给大家带来了Python实现爬虫从网络上下载文档的知识。下面小编把具体实例代码分享到脚本之家平台,感兴趣的...

    筱峰学长7232021-03-04
  • PythonEclipse和PyDev搭建完美Python开发环境教程(Windows篇)

    Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)

    这篇文章主要介绍了Eclipse和PyDev搭建完美Python开发环境教程(Windows篇),具有一定的参考价值,感兴趣的小伙伴可以了解一下。...

    Ruthless2802020-09-12
  • Pythonpython中xrange用法分析

    python中xrange用法分析

    这篇文章主要介绍了python中xrange用法,实例分析了xrange的功能、作用以及与range在使用中的区别,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    huaweitman3442020-06-07
  • Pythonopencv canny边缘检测算法详解

    opencv canny边缘检测算法详解

    本文主要介绍了opencv canny边缘检测算法详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    liu_jie_bin9502022-11-03
  • Pythonpython实现微信自动回复机器人功能

    python实现微信自动回复机器人功能

    wxpy基于itchat,使用了 Web 微信的通讯协议,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。这篇文章主要介绍了python实现微信自动回复机...

    迎风而来12232021-08-07
  • Python100 个 Python 小例子(练习题三)

    100 个 Python 小例子(练习题三)

    这篇文章主要给大家分享的是100 个 Python 小例子,前期已经给大家分过100个小例子的(一)和(二),今天小编继续和大家分享(三),希望岁正在学习的...

    野客11062022-08-30