【发布时间】:2012-07-29 18:45:16
【问题描述】:
这可能是一个简单的问题,但我无法对其进行唯一搜索。
我有一个定义静态字典的类,然后尝试定义该字典的子集,也是静态的。
所以,作为一个玩具示例:
class example(object):
first_d = {1:1,2:2,3:3,4:4}
second_d = dict((k,first_d[k]) for k in (2,3))
这会产生NameError: global name 'first_d' is not defined
我应该如何做这个参考?似乎这种模式在其他情况下也适用,例如:
class example2(object):
first = 1
second = first + 1
【问题讨论】:
-
这不是一个“静态”字典。
-
为什么不能是实例变量?
-
嗯,奇怪的是,这很好用:
second_d = {k: v for k, v in first_d.items() if k in (2, 3)} -
@ColinDunklau:我想我想模仿一个枚举。我正在为第 3 方程序编写一个控制器,为此我将组装一个控制参数的文本文件。这些是模块化的,并且在很大程度上是固定的。我的控制器每次应该只运行其中的一个子集。所以我希望每个控制器都有一个实例变量,定义为定义所有可能集合的字典的子集。这里的
second_d是默认集,而不是最终集。如果这不是做事的最佳方式,我很乐意考虑其他方法。 -
@JoelCornett 我将在您的评论中使用解决方案,除非有令人信服的理由不这样做。您能否将其作为答案,以便我接受?
标签: python dictionary class-variables