[英]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.