2012-01-27 37 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) 

如果你想類似字典的訪問,只是定義與重載索引運算符的類。