代码如下:
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__
中。如果你真的想手动处理,可以了解属性搜索顺序并按相同顺序检查所有内容...但你真的不想手动处理。(你必须处理插槽、属性、经典 vs. 新式类、自定义__dict__
、自定义描述符以及各种有趣的东西,这些都是有趣的学习内容,但与解决问题没有直接关系。) - abarnertclass Test(object)
。即使是简单的小测试程序,养成习惯也是值得的。(尤其是对于明确依赖两种类型类别差异的测试程序而言……) - abarnert