你如何在Python中创建一个独特的地图密钥?

时间:2014-12-11 02:22:02

标签: python

我想创建一个包含单个项目的各种属性的地图,并在多个模块之间共享。最明显的答案是使用字符串,但由于地图将用于多个模块,我不希望维护者必须知道所有现有属性。例如,如果两个模块想要与“颜色”相关联的东西,那么它们不应该通过不小心选择相同的名称来互相破坏。

我想到的一些不起作用的想法:

1)字符串,整数键:如上所述,这不容易扩展。

2)创建一个特定的类,使用id():例如,我认为它可以用来创建一个Key()类,但是对于从两个不同的地方导入的模块,这不起作用。例如,您可能希望将上面描述的“颜色”属性设置如下:

color = Key()

如果你这样做,这不起作用

#module命名为foo

bar = Key()
import foo
id(foo.bar) == id(bar)

3)查看堆栈跟踪以查看密钥的创建位置,并将其用作标识符的一部分。绝对不想使用行号,因为这太脆了。但是,在主模块的情况下,使用模块和项目名称会失败。例如:

在foo.py中:

key = Key() # will be named foo.py-key

其他地方,在bar.py:

import foo

foo.key   # will be named /Users/person/foo.py-key

谢谢!任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

使用字符串,但前缀为当前模块名称。然后你就不会发生任何碰撞。

key = __name__ + '.color'