Python3.x:Python3.x中的Java valueOf()等价物
在学习Python 3并将部分代码从Java转换为Python 3.3的过程中,我遇到了一个无法解决的小问题。Python3.x:Python3.x中的Java valueOf()等价物,java,python-3.x,value-of,Java,Python 3.x,Value Of,在学习Python 3并将部分代码从Java转换为Python 3.3的过程中,我遇到了一个无法解决的小问题。 在Java中,我有以下代码(只是为了使其更小而编写的伪代码): 工作正常并打印所需的“1” 在Python中尝试这样做并不容易(目前)。我试图用以下方法模拟枚举: class Mapping: C11=1 C12=2 s = 'C11' print(Mapping.Mapping.(magic should happen here).s) 不幸的是,我不知道如何将字
在Java中,我有以下代码(只是为了使其更小而编写的伪代码): 工作正常并打印所需的“1” 在Python中尝试这样做并不容易(目前)。我试图用以下方法模拟枚举:
class Mapping:
C11=1
C12=2
s = 'C11'
print(Mapping.Mapping.(magic should happen here).s)
不幸的是,我不知道如何将字符串转换为这样调用的属性(或类似的东西)。
我需要这个,因为我在类映射中有一个巨大的列表,需要将从文本文件读取的看似随机的单词转换为整数映射。您正在寻找: 从文件中: getattr(对象,名称[,默认值]) 返回对象的命名属性的值。名称必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,
getattr(x,'foobar')
相当于x.foobar
。如果命名属性不存在,则返回默认值(如果提供),否则将引发AttributeError
使用:
请阅读,不是因为这个特定的问题,而是因为它和你问它的方式表明你仍然主要用Java术语思考。我会这样做的,谢谢你的提示!
class Mapping:
C11=1
C12=2
s = 'C11'
print(Mapping.Mapping.(magic should happen here).s)
>>> getattr(Mapping, s)
1
class Mapping:
C11=1
C12=2
print(getattr(Mapping, 'C11')) # prints 1