Python 3.x:Python 3.x 中的 Java valueOf() 等效项

Tim*_*Tim 3 java value-of python-3.x

在学习 Python 3 并将一些代码从 Java 转换为 Python 3.3 时,我遇到了一个无法修复的小问题。
在Java中我有这个代码(只是虚拟代码以使其更小):

public enum Mapping {
    C11{public int getMapping(){ return 1;}},
    C12{public int getMapping(){ return 2;}},
    public abstract int getMapping();
}

String s = "C11";
System.out.println(Mapping.valueOf(s))
Run Code Online (Sandbox Code Playgroud)

工作正常并打印所需的“1”尝试在 Python 中执行此操作并不那么容易(目前为止)。我尝试用以下方法模仿枚举:

class Mapping:
    C11=1
    C12=2

s = 'C11'
print(Mapping.Mapping.(magic should happen here).s)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何将字符串转换为要像这样(或类似的东西)调用的属性。我需要这个,因为我在映射类中有一个巨大的列表,并且需要将从文本文件读取的看似随机的单词转换为整数映射。

Mar*_*ers 5

您正在寻找getattr

\n\n
>>> getattr(Mapping, s)\n1\n
Run Code Online (Sandbox Code Playgroud)\n\n

从文档中:

\n\n
\n

getattr(对象, 名称[, 默认])

\n\n

返回object的命名属性的值。名称必须是字符串。如果字符串是 object\xe2\x80\x99s 属性之一的名称,则结果是该属性的值。例如,getattr(x, \'foobar\')相当于x.foobar. 如果指定的属性不存在,则返回默认值AttributeError(如果提供),否则引发。

\n
\n