Python 如何使用字典或数组中的参数调用类方法
我有一个类,里面有不同的方法。 在这个项目中,我必须读入输入并根据我在输入中收到的内容调用方法。 这是我的密码 导入系统 最小尺寸=5 最大尺寸=20 信息='name=“FabienLeGenie”,version=“1.0”,author=“TheBoss”,country=“Reu”' AI=“X” MANAGER=“O” 类协议: 定义初始化(自): self.size=0 self.board=[] def startGame(自身,尺寸): self.size=大小 如果self.size>MAX\u size或self.sizePython 如何使用字典或数组中的参数调用类方法,python,python-3.x,Python,Python 3.x,我有一个类,里面有不同的方法。 在这个项目中,我必须读入输入并根据我在输入中收到的内容调用方法。 这是我的密码 导入系统 最小尺寸=5 最大尺寸=20 信息='name=“FabienLeGenie”,version=“1.0”,author=“TheBoss”,country=“Reu”' AI=“X” MANAGER=“O” 类协议: 定义初始化(自): self.size=0 self.board=[] def startGame(自身,尺寸): self.size=大小 如果self.s
BEGIN
,我必须执行startGame
我试图找到一个解决方案,使我的方法调用动态,避免if
语句滥用。
我曾想过使用数组或词汇表,但我不知道如何在其中发送参数,因为您可能已经看到,我的一些方法接受参数,而其他方法不接受参数。有可能用这样的类中的方法创建词汇表吗
它可能看起来像这样:
dict={
“开始”:jb.startGame,
“结束”:jb.endGame,
“TURN”:jb.turnGame,#我认为你的思路是正确的,应该很简单。如果我很好地理解你的用例,你就不会用这种方式传递任何未使用的参数
class Protocol:
def run(action: str, params: dict):
dict = {
"TURN": self.turn_func,
...
}
dict[action](**params)
把它叫做:
protocol = Protocol()
turn_args = {...}
protocol.run("TURN", turn_args)
我认为你在正确的轨道上,应该很简单。如果我很好地理解你的用例,你就不会以这种方式传递任何未使用的参数
class Protocol:
def run(action: str, params: dict):
dict = {
"TURN": self.turn_func,
...
}
dict[action](**params)
把它叫做:
protocol = Protocol()
turn_args = {...}
protocol.run("TURN", turn_args)
一个与你的答案不直接相关的提示:大多数代码都不是支持你的问题所必需的,它只会使问题更难阅读。这对提问的人来说也是有益的,将问题缩小到尽可能小的代码块中,使问题尽可能清晰,就像你所说的函数一样示例中的on确实是正确的(尽管您可以自己检查并看到它的工作原理,为什么还要等我们回答呢?)。但是,如果任何方法接受不同的参数集,最好恢复到传统的if-elif-else方法。还有一个提示:尝试将变量命名为不同于python关键字的名称,如dict
,list
,等等。抱歉,显示的代码不足以理解您的问题。什么是myArgs
?您如何选择它们,即,如果/或者其他,您是否可以为它们避免,或者您只是在转移问题?最重要的是,代码看起来已经很好了–您是否真的试过运行它?简言之,您似乎想问大量的“如何将参数从元组/dict解包到函数?”,但用一些无关紧要的类用例来掩盖这一点——调用一个方法与调用其他任何东西都没有区别。一个与您的答案不直接相关的提示:大多数代码都不是支持您的问题所必需的,它只会使问题更难阅读。作为提问者,缩小问题范围对您也有好处n在尽可能小的代码块中,为了使问题尽可能清晰,您在示例中调用函数的方式确实是正确的(尽管您可以自己检查并查看它是否有效,为什么要等待我们的回答?)。但是,如果任何方法接受不同的参数集,最好恢复到传统的if-elif-else方法。还有一个提示:尝试将变量命名为不同于python关键字的名称,如dict
,list
,等等。抱歉,显示的代码不足以理解您的问题。什么是myArgs
?您如何选择它们,即,如果/或者其他,您是否可以为它们避免,或者您只是在转移问题?最重要的是,代码看起来已经很好了–您是否真的试过运行它?简言之,您似乎想问大量的“如何将参数从元组/dict解包到函数?”,但用一些无关紧要的类用例来掩盖这一点——调用一个方法和调用其他任何东西都没有区别。