知道名称,获取obj属性的值

时间:2018-07-10 09:15:53

标签: python python-3.x

我有许多常量,这些变量中我保留名字。

ATTR_ITEM_NAME = 'pro'

我检查属性是否附加到对象:

 if hasattr(obj1, ATTR_ITEM_NAME):

然后如果存在,我希望将属性值传递给对象的属性,如下所示:

obj2.fm = obj1.ATTR_ITEM_NAME

ATTR_ITEM_NAME是字符串而不是属性是错误,我需要一些有效的方法;

1 个答案:

答案 0 :(得分:4)

Python也有getattr,其作用类似于hasattr,但返回值:

obj2.fm = getattr(obj1, ATTR_ITEM_NAME)

如果不确定该属性是否存在,则可以:

  • 分配默认值(例如None

    DEFAULT = None
    obj2.fm = getattr(obj1, ATTR_ITEM_NAME, DEFAULT)
    
  • 或使用

    捕获异常
    try:
        obj2.fm = getattr(obj1, ATTR_ITEM_NAME)
    except AttributeError:
        pass  # or do something else...