【问题标题】:Execute a function with an instance based on user input (in conjunction with a class) [Python]基于用户输入(结合类)使用实例执行函数 [Python]
【发布时间】:2014-01-25 23:52:47
【问题描述】:

当我在做一个小项目时,我遇到了一些障碍。我想用某个类的某个实例执行一个函数,但用户需要输入它们。我知道您可以在代码本身中输入实例,例如:

run(instance1,instance2)

伪代码中的一个小例子。 (我知道代码毫无意义,只是为了说明这一点。)

class main()
    def __init__(self, a, b ,c):
        self.a = a
        self.b = b
        self.c = c
        self.d = d

test1 = main(10, 443, 5, 46)
test2 = main(340, 3, 554, 2134)
test3 = main(140, 3, 98, 6)
test4 = main(0, 345, 7, 46)

def check(instance_a, insance_b):
    print instance_a.b, instance_b.c

def run(instance_a, instance_b):
    while True:
       check(instance_a, instance_b)

instance_a = raw_input('set instance a')
instance_b = raw_input('set instance b')

run(instance_a, instance_b)

这个想法是用户可以输入 test1,test2,test3,test4,然后程序将执行所有选择的 2 个实例的函数。这是可能吗?或者您是否必须使用 if 语句手动设置所有选项?非常感谢!

【问题讨论】:

  • 我还是不清楚你想做什么。我想我已经挂断了你有一个只有一个打印语句的无限循环。
  • 正如我所说的示例代码,我只是想知道如何使用用户定义的实例运行函数。循环只是作为在函数之间切换实例的示例。我希望这已经消除了你的困惑:)

标签: python function class instance


【解决方案1】:

为此,将实例按名称存储在字典中,而不是作为单独的变量名称:

tests = {'test1': main(...), 'test2': main(...), ...}

然后您可以根据用户输入轻松访问它们:

instance_a = raw_input('set instance a')
instance_b = raw_input('set instance b')
run(tests[instance_a], tests[instance_b])

并添加一些简单的有效输入检查:

if instance_a not in tests:
    # complain to user

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2015-05-18
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多