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)
不幸的是,我不知道如何将字符串转换为要像这样(或类似的东西)调用的属性。我需要这个,因为我在映射类中有一个巨大的列表,并且需要将从文本文件读取的看似随机的单词转换为整数映射。
您正在寻找getattr:
>>> getattr(Mapping, s)\n1\nRun Code Online (Sandbox Code Playgroud)\n\n从文档中:
\n\n\n\ngetattr(对象, 名称[, 默认])
\n\n返回object的命名属性的值。名称必须是字符串。如果字符串是 object\xe2\x80\x99s 属性之一的名称,则结果是该属性的值。例如,
\ngetattr(x, \'foobar\')相当于x.foobar. 如果指定的属性不存在,则返回默认值AttributeError(如果提供),否则引发。