首页 > 解决方案 > 为什么属性在 getattr() 中作为字符串传递?

问题描述

打印变量的值时,不要在变量周围添加引号,但是当使用 getattr() 函数访问属性的值时,您将其作为字符串传递。这是有原因的还是我必须记住的?

标签: python

解决方案


这就是 的目的getattr。这样您就可以根据存储在内存中的字符串动态访问属性。

示例场景:

user_provided_input = input()

getattr(some_object, user_provided_input + "dummy")

如果用户键入“justa”,这将与以下内容完全相同:

some_object.justadummy

如果用作字符串文字,您还可以使用通常会导致语法错误或其他类型错误的字符串:

>>> setattr(some_object, ".", "dummyvalue")
>>> getattr(some_object, ".")
'dummyvalue'
>>> some_object..
  File "<stdin>", line 1
    some_object..
      ^
SyntaxError: invalid syntax

推荐阅读