在Python中如何通过字符串访问类变量?

在Python中如何通过字符串访问类变量?,python,class,variables,Python,Class,Variables,代码如下所示: class Test: a = 1 def __init__(self): self.b=2 当我创建一个Test的实例时,我可以像这样访问它的实例变量b(使用字符串“b”): 但是它不适用于a作为self.\uu dict\uuuuu不包含名为a的键。那么,如果我只有一个字符串a,我如何访问a 谢谢 要获取变量,可以执行以下操作: getattr(test, a_string) 用这种方式做你想做的事: test = Test() a_str

代码如下所示:

class Test:
    a = 1
    def __init__(self):
        self.b=2
当我创建一个
Test
的实例时,我可以像这样访问它的实例变量
b
(使用字符串“b”):

但是它不适用于
a
作为
self.\uu dict\uuuuu
不包含名为
a
的键。那么,如果我只有一个字符串
a
,我如何访问
a


谢谢

要获取变量,可以执行以下操作:

getattr(test, a_string)
用这种方式做你想做的事:

test = Test()
a_string = "b"
print getattr(test, a_string)
试试这个:

类测试:
a=1
定义初始化(自):
self.b=2
测试=测试()
a_string=“b”
打印测试.\uuuu dict\uuuuu[字符串]
打印测试。u_类_;。_; dict __;[“a”]
您可以使用:

getattr(测试,字符串,默认值)


使用第三个参数返回一些
默认值
,以防
测试
类上找不到字符串。

由于变量是类变量,因此可以使用以下代码:-

class Test:
    a = 1
    def __init__(self):
        self.b=2

print Test.__dict__["a"]

self.\uuuuu dict\uuuu
不包含名为
a
的键的原因是它位于
self.\uuuuu类中。如果你真的想手动操作,你可以阅读属性的搜索顺序,然后按相同的顺序检查所有内容……但是你真的不想手动操作。(您必须处理插槽、属性、经典与新样式的类、自定义
\uu dict\uu
s、自定义描述符以及其他各种有趣的东西,但与解决问题没有直接关系。)PS,因为这显然是Python2.x,您可能需要
类测试(对象)
,除非您有特定的理由避免使用新样式的类。即使是简单的小测试程序,也值得养成习惯。(特别是对于明确依赖于两类不同方式的测试程序…)
class Test:
    a = 1
    def __init__(self):
        self.b=2

print Test.__dict__["a"]