如何从 python 中的名称中获取命名元组实例?

How can I get a named tuple instance from its name in python?

我有一组命名元组实例。例如:

   CostFN = namedtuple('CostFN', ['name', 'func', 'args'])
   tuple_lin_1 = CostFN(name="lin_1", args=args_for_1, func1=func_1)
   tuple_lin_2 = CostFN(name="lin_2", args=args_for_1, func1=func_2)
   tuple_lin_3 = CostFN(name="lin_3", args=args_for_2, func1=func_1)
   tuple_lin_4 = CostFN(name="lin_4", args=args_for_2, func1=func_2)

我正在保存实例名称,我想从它的名称访问相关实例。 就像是: my_tuple = CostFN.get("lin4") 我该如何实现?

你不能以任何合理的方式。对象 没有 您认为的名称,名称 绑定 到对象。所以 tuple_lin_4 是一个名称,它包含到 CostFN 的关联实例的绑定,但该实例 没有 认为它绑定到该名称。同样,该实例知道它是 CostFN 类型,但 CostFN 不知道它自己的实例。所以你有两层,其中的链接没有按照你想要的方式工作。

如果按名称查找实例有问题,我建议 dict 将名称映射到实例,而不是使用单独的命名变量。如果你真的想要,你可以使用自定义 __new__ 来做一些糟糕的事情,以在 dict 上缓存与 class 相关联的实例,但坦率地说,即使那样也太过分了;如果您认为自己需要这样的行为,您可能 an XY problem