动态使用类属性和可重用函数

时间:2018-03-03 13:57:38

标签: python python-3.x

我正在努力实现以下目标(从实际代码中简化)

def _do_something(o1, o2, keyatt):
   x = o1.keyatt
   y = o2.keyatt
   return x == y

_do_something(srcObj, destObj, a)
_do_something(srcObj, destObj, b)

两个对象属于同一类,具有'a'和'b'属性

不确定如何传递属性,以便它们与o1和o2动态关联。

我试过了_do_something(srcObj, destObj, 'a')但是我遇到了属性错误。 我也尝试将_do_something修改为使用的下标(即o1[keyatt],但会引发一个TypeError,该对象不是可编写脚本的。

这在Python中是否可行? (我对这门语言很新。)

1 个答案:

答案 0 :(得分:1)

使用getattr

def _do_something(o1, o2, keyatt):
    x = getattr(o1, keyatt)
    y = getattr(o2, keyatt)
    return x == y


class A:
    def __init__(self, a, b):
        self.a = a
        self.b = b

srcObj = A(1, 2) 
destObj = A(1, 10) 
print(_do_something(srcObj, destObj, 'a'))
print(_do_something(srcObj, destObj, 'b'))

输出:

True
False