【发布时间】:2021-05-18 20:19:58
【问题描述】:
没有详细说明。我有这样的结构:
class someClass():
def __init__(self, m):
if m == 1:
self.mode1()
elif m == 2:
self.mode2()
elif m == 3:
self.mode3()
.....
elif m == 10:
self.mode10()
这是一个具有不同操作模式的类。将变量m 传递给我想设置运行类的相应方法的操作模式的类。有没有办法更优雅地做到这一点并摆脱“if”语句?对于这种特定情况,可能有一些设计模式吗?
【问题讨论】:
-
传递行为。
-
您所描述的在 C 和 C++ 中称为“switch case”结构。不幸的是,python 决定不使用这个标准。作为结构的替代,许多人使用字典映射,如下所示:geeksforgeeks.org/switch-case-in-python-replacement
-
尝试策略模式。
-
这是说你有一个可变的父类,我无法理解。你确定那是你想要做的吗?
m应该是 init 方法的参数吗? -
是的,
m是init方法的参数。
标签: python oop design-patterns