【问题标题】:Python string to attributePython字符串属性
【发布时间】:2020-10-31 03:22:43
【问题描述】:

我怎样才能完成这样的工作:

def get_foo(someobject, foostring):
    return someobject.foostring

IE:

如果我这样做get_foo(obj, "name"),它应该调用obj.name(将输入视为字符串,但我将其称为属性。

谢谢

【问题讨论】:

标签: python attributes


【解决方案1】:

使用内置函数getattr

getattr(object, name[, default])

返回object的命名属性的值。 name 必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,getattr(x, 'foobar') 等价于 x.foobar。如果命名属性不存在,则返回 default(如果提供),否则会引发 AttributeError

【讨论】:

  • 我们能做到这一点真是太幸运了 =)
【解决方案2】:

如果someobject 有一个名为foostring 的属性,那么

def get_foo(someobject, foostring):
    return getattr(someobject,foostring)

或者如果你想为提供的对象设置一个属性,那么:

def set_foo(someobject, foostring, value):
    return setattr(someobject,foostring, value)

试试看

【讨论】:

    【解决方案3】:

    你应该使用 setattr 和 getattr:

    setattr(object,'property',value)
    getattr(object,'property',default)
    

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2011-06-04
      • 2021-11-03
      相关资源
      最近更新 更多