>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
我该如何访问在
my_str
中定义的my_object
的字段?>>> my_object.name = 'stuff'
>>> my_str = 'name'
>>> my_object[my_str] # won't work because it's not a dictionary :)
my_str
中定义的my_object
的字段?getattr(my_object, my_str)
或者,如果您不确定名称是否存在于键中并希望提供备用选项而不是抛出异常:
getattr(my_object, my_str, "Could not find anything")
myobject.__dict__[my_str]
,有什么优势吗?更好的性能吗? - Pierre de LESPINAYgetattr
之前添加 try:
或者 if hasattr(
来确保您不尝试访问不存在的内容。 - oriadamgetattr
不会抛出异常。它基本上是if hasattr give me that else give me the default
的语法糖。 - Tomgetattr(my_object, my_str, None)
。 - Tom>>> myobject.__dict__[my_str]
'stuff'
__slots__
和 __getattr__/__getattribute__/__setattr__
重载 - 还有可能是其他一些东西。 - user395760getattr(my_object, my_str)
在性能方面更好吗? - Pierre de LESPINAY一般情况下,您不能使用__dict__
方法。永远可行的方法是
getattr(myobject, my_str)