>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
我如何可以访问的my_object
上my_str
定义的字段?的Python - 访问对象属性在字典
>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
我如何可以访问的my_object
上my_str
定义的字段?的Python - 访问对象属性在字典
getattr(my_object, my_str)
针对'myobject .__ dict __ [my_str]'的优势是什么?更好的性能 ? – 2012-01-27 15:28:20
我可以回到标准的“这是更Pythonic”的答案吗?另外,利用私人__变量也会带来一系列风险。你想要做的是getattr和setattr的用途。 – Tom 2012-01-27 16:07:15
好的,谢谢你的信息 – 2012-01-27 16:46:31
>>> myobject.__dict__[my_str]
'stuff'
请注意,这打破了属性,'__slots__'和'__getattr __/__ getattribute __/__ setattr__'重载 - 可能还有一些其他的东西。 – delnan 2012-01-27 15:18:31
好的,谢谢你的信息。你认为getattr(my_object,my_str)对性能更好吗? – 2012-01-27 15:51:33
性能是您最不关心的问题。如果是这样,您可以在C中重写该部分(即整个循环,以避免多种跨语言调用),但在考虑这种优化之前,您应该有一个不可接受的放缓的可靠证明。 – delnan 2012-01-27 15:56:47
你不能做__dict__
-approach一般。什么会一直工作
getattr(myobject, my_str)
如果你想类似字典的访问,只是定义与重载索引运算符的类。
btw,这是完全有效的javascript – watashiSHUN 2018-01-14 04:04:36