我正在努力实现以下目标(从实际代码中简化)
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中是否可行? (我对这门语言很新。)
答案 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