通过在Python中使用变量来访问类属性?

Access to class attributes by using a variable in Python?

本问题已经有最佳答案,请猛点这里访问。

在PHP中,我可以访问如下类属性:

1
2
3
4
5
6
7
<?php // very simple :)
class TestClass {}
$tc = new TestClass{};
$attribute = 'foo';
$tc->{$attribute} = 'bar';
echo $tc->foo
// should echo 'bar'

我怎样才能在python中做到这一点?

1
2
3
4
5
6
class TestClass()
tc = TestClass
attribute = 'foo'
# here comes the magic?
print tc.foo
# should echo 'bar'


这个问题已经问了好几次了。可以使用getattr按名称获取属性:

1
print getattr(tc, 'foo')

这也适用于以下方法:

1
getattr(tc, 'methodname')(arg1, arg2)

要按名称设置属性,请使用setattr

1
setattr(tc, 'foo', 'bar')

要检查属性是否存在,请使用hasattr

1
hasattr(tc, 'foo')


1
2
3
4
5
6
class TestClass(object)
    pass

tc = TestClass()
setattr(tc,"foo","bar")
print tc.foo