繁体   English   中英

您如何在Python中创建唯一的映射键?

[英]How do you make a unique map key in Python?

我想制作一个包含单个项目各种属性的地图,并在多个模块之间共享它。 最明显的答案是使用字符串,但是由于映射将在多个模块中使用,因此我不希望维护人员必须了解所有现有属性。 例如,如果两个模块想要与“颜色”相关联的东西,则它们不应因偶然选择相同的名称而互相破坏。

我想到的一些想法行不通:

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

2)创建一个特定的类,使用id():例如,我认为创建一个Key()类是可行的,但是对于从两个不同地方导入的模块而言,这是行不通的。 例如,您可能希望使上述的“ color”属性如下所示:

color = Key()

如果这样做就行不通

#名为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

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

使用字符串,但在其前面加上当前模块名称。 这样您就不会遇到任何碰撞。

key = __name__ + '.color'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM