gpt4 book ai didi

python - 根据类启动参数决定调用哪个类方法

转载 作者:行者123 更新时间:2023-11-30 23:04:52 25 4
gpt4 key购买 nike

我努力创建一个描述性标题,但我的挑战如下:

在我的 Python 应用程序中,我有一个通信模块,以前只使用一种传输类型:串行。现在我还希望它包含另一个传输层,称为 RTT。我的类 COM 包含 connectsendreadlog 等方法。现在我需要所有这些方法的两个不同版本,并且我希望拥有它,以便根据类实例化决定调用哪些方法。

例如 comlink = COM('RTT') 将使用特定于 RTT 协议(protocol)的发送、读取、连接集,反之亦然,无需创建额外的类并决定在更高级别上使用哪个类。

这可能吗?

最佳答案

COM() 为返回正确类实例的函数。例如

def COM(ctype):
try:
klass = {
'RTT' : ComRTT,
'serial' : ComSerial}[ctype]
except KeyError:
raise ValueError("Invalid connection class: {}".format(ctype))
instance = klass()
return instance

>>> com = COM('RTT')

您也可以将其作为基类的类方法来执行。

class Communication:
@classmethod
def from_type(cls, ctype):
try:
klass = {
'RTT' : ComRTT,
'serial' : ComSerial}[ctype]
except KeyError:
raise ValueError("Invalid connection class: {}".format(ctype))
return klass()

>>> com = Communication.from_type('RTT')

结果和模式是相同的,但后者可能更可取,因为它(可以说)更清楚地表明它与Communication类有关。

关于python - 根据类启动参数决定调用哪个类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33494269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com