【问题标题】:Python how to call function base on different input value in a class?Python如何根据类中的不同输入值调用函数?
【发布时间】:2022-01-21 23:37:22
【问题描述】:

我有一个具有多种功能的课程。给定类外的id,是否可以根据id值调用函数?

例如,

如果id = 1,运行fun1

如果id = 2,运行fun2

class functions:
    def fun1(self, para1, para2, para3):
        pass
    def fun2(self, para1, para2, para3):
        pass
    ·
    ·
    ·

更准确地说,我想以这种方式调用这些函数。 在另一个班级里

id = x
fun(x, para1, para2, para3)

然后fun(x, para1, para2, para3) 将在functions 类基于x 中调用不同的fun

【问题讨论】:

  • 是的,只需创建一个映射,其中 id 将是一个键,例如functions = {1: fun1, 2: fun2}。然后使用 id 检索函数并将其命名为functions[1]()
  • 这有点复杂,因为它们是方法。
  • 这些是静态方法还是实例方法?实例方法需要一个 self 参数。
  • @Barmar 它们将是实例方法。
  • @user8314628,你为什么不再定义一个方法fun(),其中包含一堆if id == 1: fun1() 语句?

标签: python function class call


【解决方案1】:

使用字典将 ID 映射到方法。

func_map = {1: functions.fun1, 2: functions.fun2}
f = functions()
id = int(input("Enter function id:"))

if id in func_map:
    params = input("Enter parameters separated by space:").split()
    func_map[id](f, *params)
else:
    print("Invalid function")

【讨论】:

  • 好的,这和我做的差不多。我改用if 语句。但是它有7个案例,看起来很乏味。
  • @user8314628,如果有必要,拥有一打if 绝对没问题。
  • @user8314628 使其数据驱动可以简化代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2020-03-23
相关资源
最近更新 更多