如何在Python中通过调用同一个字典值来每次返回新对象?

3
我将尝试为字典元素设置类定义,使得每次获取 dict 元素时都会出现新对象。 示例:
types = {}
types[first_type] = FirstType()
types[second_type] = SecondType()

通过设置types[first_type],我可以得到new FirstType()

some_var = new types[first_type] # this is illegal statement.

我该如何在Python中实现这个功能?


这将是相当令人惊讶的行为。你可以实现一个表现出这种行为的类,但该类的任何用户都需要明确知道这种行为,否则他们的代码可能会出现奇怪的副作用。不应该期望foo = bar['baz']; foo.something()的行为与bar['baz'].something()不同。 - deceze
你能提供更多关于你的类的上下文和一个最小的示例吗? - Chris_Rands
@deceze 我会记住的。 - Ugnius Malūkas
@Chris_Rands 我已经找到了我要找的东西。如果你还需要上下文,我只需要在每次调用字典项时获取新类型。 - Ugnius Malūkas
2个回答

7
尝试将它们转化为“对象生成器”本身。
types = {}
types[first_type] = FirstType
types[second_type] = SecondType

然后,您可以通过调用该点来每次获取一个新的对象。
some_var = types[first_type]()

3

以下是一个使用标准类型的工作示例:

>>> types = {"list": list, "int": int, "dict": dict}
>>> types["list"]()
[]
>>> types["int"]()
0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接