【发布时间】:2012-10-29 11:30:18
【问题描述】:
代码是这样的:
class Test:
a = 1
def __init__(self):
self.b=2
当我创建Test 的实例时,我可以像这样访问它的实例变量b(使用字符串“b”):
test = Test()
a_string = "b"
print test.__dict__[a_string]
但它不适用于a,因为self.__dict__ 不包含名为a 的键。那么如果我只有一个字符串a,如何访问a?
谢谢!
【问题讨论】:
-
self.__dict__不包含名为a的键的原因是它在self.__class__.__dict__中。如果您真的想手动执行操作,您可以阅读属性的搜索顺序并以相同的顺序检查所有内容……但您真的不想手动执行操作。 (您必须处理插槽、属性、经典与新型类、自定义__dict__s、自定义描述符以及各种其他有趣的东西,但与解决您的问题没有直接关系。 ) -
PS,因为这显然是 Python 2.x,所以你可能需要
class Test(object),除非你有特定的理由避免使用新式类。即使对于简单的小测试程序,养成习惯也是值得的。 (尤其是对于明确依赖于两种类不同方式的测试程序……)