如何在Python中将对象作为字典键传递(TestComplete问题?)

eaf3rand  于 2022-12-01  发布在  Python
关注(0)|答案(2)|浏览(138)

我知道字典键需要是字符串或不可变对象。但我不想把字符串作为键传递。原因是,每次我使用字典时,我都必须输入精确的字符串,这给我留下了很大的编码难度和错误空间。
这只会发生在TestComplete(V12)上,

class test():
    testStr = 'test'
    testStr2 = 'test2'

class Coverage():
     Data ={test.testStr    : True,
            test.testStr2   : 'something with white space'}

如果这是个坏主意,为什么?

k97glaaz

k97glaaz1#

这似乎是TestComplete的Python解析器中的一个问题,SmartBear对此有一个补丁。您可以通过contact them获取该补丁。

nfzehxib

nfzehxib2#

您可以使用Enum来达到此目的。

from enum import Enum     # for enum34, or the stdlib version
# from aenum import Enum  # for the aenum version
Animal = Enum('Animal', 'ant bee cat dog')

Animal.ant  # returns <Animal.ant: 1>
Animal['ant']  # returns <Animal.ant: 1> (string lookup)
Animal.ant.name  # returns 'ant' (inverse lookup)

或等同地:

class Animal(Enum):
    ant = 1
    bee = 2
    cat = 3
    dog = 4

data = {
    Animal.ant: 'small',
    Animal.dog: 'big'
}

相关问题