如何从 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。
我有一组命名元组实例。例如:
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。