2012-01-27 42 views

回答

18
getattr(my_object, my_str) 

More on getattr.

+0

针对'myobject .__ dict __ [my_str]'的优势是什么?更好的性能 ? – 2012-01-27 15:28:20

+3

我可以回到标准的“这是更Pythonic”的答案吗?另外,利用私人__变量也会带来一系列风险。你想要做的是getattr和setattr的用途。 – Tom 2012-01-27 16:07:15

+0

好的,谢谢你的信息 – 2012-01-27 16:46:31

1
>>> myobject.__dict__[my_str] 
'stuff' 
+2

请注意,这打破了属性,'__slots__'和'__getattr __/__ getattribute __/__ setattr__'重载 - 可能还有一些其他的东西。 – delnan 2012-01-27 15:18:31

+0

好的,谢谢你的信息。你认为getattr(my_object,my_str)对性能更好吗? – 2012-01-27 15:51:33

+2

性能是您最不关心的问题。如果是这样,您可以在C中重写该部分(即整个循环,以避免多种跨语言调用),但在考虑这种优化之前,您应该有一个不可接受的放缓的可靠证明。 – delnan 2012-01-27 15:56:47

1

你不能做__dict__ -approach一般。什么会一直工作

getattr(myobject, my_str) 

如果你想类似字典的访问,只是定义与重载索引运算符的类。